Pagini recente » Cod sursa (job #1873272) | Cod sursa (job #1109616) | Cod sursa (job #2204763) | Cod sursa (job #3004913) | Cod sursa (job #1706542)
#include <cstdio>
#include <vector>
#include <queue>
#define DIM 50005
#define INF 0x3f3f3f
using namespace std;
int dist[DIM];
int viz[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, f;
scanf("%d%d",&n,&m);
for( i = 1; i <= m; ++i ){
scanf("%d%d%d",&x,&y,&c);
v[x].push_back({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( viz[x] ) continue;
viz[x] = true;
for( i = 0; i < v[x].size(); i++ ){
y = v[x][i].second;
c = v[x][i].first;
if( dist[y] > c + dist[x] ){
dist[y] = c + dist[x];
Q.push({-dist[y],y});
}
}
}
for( i = 2; i <= n; ++i ){
if( dist[i] != INF ) printf("%d ",dist[i]);
else printf("0 ");
}
return 0;
}