Pagini recente » Cod sursa (job #1994860) | Cod sursa (job #1521545) | Cod sursa (job #1995866) | Cod sursa (job #2277326) | Cod sursa (job #571931)
Cod sursa(job #571931)
#include<cstdio>
#define INF 0x3f3f3f3f
struct line{
int x, y, c;
} G[500001];
int d[500001], n, m;
bool ok;
int main() {
FILE *f = fopen("dijkstra.in", "r");
FILE *g = fopen("dijkstra.out", "w");
int first = 1;
fscanf(f,"%d %d", &n, &m);
for(int i=1; i<=m; i++){
fscanf(f,"%d %d %d", &G[i].x, &G[i].y, &G[i].c);
if(G[i].x==first)
d[G[i].y]=G[i].c;
}
for(int i=1; i<=n; i++)
if(d[i]==0)
d[i]=INF;
do{
ok=true;
for(int i=1; i<=m; i++)
if(d[G[i].y] > d[G[i].x]+G[i].c) {
d[G[i].y] = d[G[i].x]+G[i].c;
ok=false;
}
} while(!ok);
for(int i=2; i<=n; i++)
if(d[i]!=INF)
fprintf(g,"%d ", d[i]);
/*else
h<<"0 ";*/
}