Pagini recente » Cod sursa (job #2952249) | Cod sursa (job #1895093) | Cod sursa (job #1506580) | Cod sursa (job #2492646) | Cod sursa (job #703558)
Cod sursa(job #703558)
#include <cstdio>
struct camp
{
int a,b,c;
} G[250001];
int cost[50001];
int i,ok,n,m;
main()
{
FILE * in = fopen("dijkstra.in","r");
FILE * out = fopen("dijkstra.out","w");
fscanf(in, "%d%d", &n, &m);
for(i=1;i<=m;i++)
{
fscanf(in, "%d%d%d", &G[i].a, &G[i].b, &G[i].c);
if(G[i].a==1)
cost[G[i].b]=G[i].c;
}
for(i=2;i<=n;i++)
{
if(cost[i]==0)
cost[i]=1<<30;
}
ok=1;
while(ok)
{
ok=1;
for(i=1;i<=m;i++)
if(cost[G[i].b]> cost[G[i].a]+G[i].c)
cost[G[i].b]=cost[G[i].a]+G[i].c, ok=0;
}
for(i=2;i<=n;i++)
{
if(cost[i]!=1<<30)
fprintf(out,"%d ",cost[i]);
else
fprintf(out,"0 ");
}
}