Pagini recente » Cod sursa (job #1012221) | Cod sursa (job #1401031) | Cod sursa (job #1284690) | Cod sursa (job #193611) | Cod sursa (job #1706435)
#include <cstdio>
#include <vector>
#include <queue>
#define DIM 50005
#define INF 0x3f3f3f
#define pb push_back
using namespace std;
int dist[DIM];
int in_queue[DIM];
vector < pair<int, int> > v[DIM];
priority_queue < pair<int, int> > Q;
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n, m, i, j, x, y, c, s, t, d;
scanf("%d%d",&n,&m);
for( i = 1; i <= m; ++i ){
scanf("%d%d%d",&x,&y,&c);
v[x].pb({c,y});
}
for( i = 2; i <= n; ++i ) dist[i] = INF;
Q.push({0,1});
while( !Q.empty() ){
x = Q.top().second;
Q.pop();
if ( in_queue[x] ) continue;
in_queue[x] = true;
for( i = 0; i < v[x].size(); ++i ){
if( dist[v[x][i].second] > v[x][i].first + dist[x] ){
dist[v[x][i].second] = v[x][i].first + dist[x];
Q.push({dist[v[x][i].second],v[x][i].second});
}
}
}
for( i = 2; i <= n; ++i )
printf("%d ",dist[i]);
return 0;
}