Pagini recente » Cod sursa (job #2750631) | Cod sursa (job #2318115) | Cod sursa (job #2589684) | Cod sursa (job #712304) | Cod sursa (job #867020)
Cod sursa(job #867020)
#include<stdio.h>
using namespace std;
FILE *in,*out;
const int inf=(1<<30)-1;
struct arc
{
int x,y,cost;
}v[250001];
int m,i,D[50001],ok=1,n;
int main ()
{
in=fopen("dijkstra.in","rt");
out=fopen("dijkstra.out","wt");
fscanf(in,"%d%d",&n,&m);
for(i=2;i<=n;++i)
D[i]=inf;
for(i=1;i<=m;++i)
{
fscanf(in,"%d%d%d",&v[i].x,&v[i].y,&v[i].cost);
if(v[i].x==1)
D[v[i].y]=v[i].cost;
}
while(ok)
{
ok=0;
for(i=1;i<=m;++i)
{
if(D[v[i].x]!=inf && D[v[i].y]>D[v[i].x]+v[i].cost)
{
D[v[i].y]=D[v[i].x]+v[i].cost;
ok=1;
}
}
}
for(i=2;i<=n;++i)
fprintf(out,"%d ", (D[i]>=inf) ? 0 : D[i]);
return 0;
}