Pagini recente » Cod sursa (job #2577490) | Cod sursa (job #1151734) | Cod sursa (job #1111203) | Cod sursa (job #3177685) | Cod sursa (job #706205)
Cod sursa(job #706205)
#include <cstdio>
#include <vector>
#include <queue>
#include <string.h>
#define maxn 50001
using namespace std;
struct nodulet {long d; long lg;} arc;
vector < nodulet > A[maxn];
queue < long > q;
long x, i, N, K, elc, C[maxn], G[maxn];
bool viz[maxn];
int main() {
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%ld %ld", &N, &K);
for (i = 0; i < K; ++i) {
scanf("%ld %ld %ld", &x, &arc.d, &arc.lg);
A[x].push_back(arc);
}
for (i = 1; i <= N; ++i) {
G[i] = A[i].size();
}
memset(C, 5000000, sizeof(C));
C[1] = 0;
q.push(1);
for (; !q.empty(); q.pop()) {
elc = q.front();
for (i = 0; i < G[elc]; ++i) {
if ( C[elc] + A[elc][i].lg < C[A[elc][i].d] ) {
C[ A[elc][i].d ] = C[elc] + A[elc][i].lg;
q.push(A[elc][i].d);
}
}
}
for (i = 2; i <= N; ++i) {
if (C[i] == 500000000)
printf("0 ");
else
printf("%ld ", C[i]);
}
printf("\n");
return 0;
}