Pagini recente » Cod sursa (job #1512836) | Cod sursa (job #567035) | Cod sursa (job #1067602) | Cod sursa (job #683877) | Cod sursa (job #1957852)
#include <fstream>
#include <vector>
#include <queue>
#define x first
#define y second
using namespace std;
ofstream fout ("djikstra.out");
ifstream fin ("djikstra.in");
vector < pair < int , int > > v[50005];
priority_queue < pair < int , int > > q;
pair < int , int > aux;
const int oo = 2e9;
int n,m,i,a,b,c;
int rsp[50005];
int main()
{
fin>>n>>m;
for( i = 1 ; i <= m ; i++ )
{
fin>>a>>b>>c;
v[ a ].push_back( make_pair( b , c ) );
v[ b ].push_back( make_pair( a , c ) );
}
for( i = 1 ; i <= n ; i++ )
rsp[ i ] = oo;
q.push( make_pair( 0 , 1 ) );
while( q.size() )
{
aux = q.top();
q.pop();
aux.x *= -1;
for( auto it : v[ aux.y ] )
{
if( aux.x + it.y < rsp[ it.x ] )
{
rsp[ it.x ] = aux.x + it.y;
q.push( make_pair( -rsp[ it.x ] , it.x ) );
}
}
}
for( i = 2 ; i <= n ; i++ )
fout<< ( rsp[ i ] != oo ? rsp[ i ] : 0 )<<" ";
}