Cod sursa(job #703586)

Utilizator remus_maziluRemus Mazilu remus_mazilu Data 2 martie 2012 12:58:45
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#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;
	}
	
	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 ");
	}
}