Cod sursa(job #633436)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 13 noiembrie 2011 19:41:05
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>

#define file_in "dijkstra.in"
#define file_out "dijkstra.out"

#define nmax 505001


int i,j,N,M;
int d[nmax];
int x[nmax];
int y[nmax];
int c[nmax];

int main(){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &N, &M);
	for (i=1;i<=M;++i){
		 scanf("%d %d %d", &x[i], &y[i], &c[i]);
		 
		 if (x[i]==1)
			  d[y[i]]=c[i];
	}
	
	for (i=2;i<=N;++i)
		 if (d[i]==0)
			 d[i]=0x3f3f3f3f;
		 
	int ok=0;

	while(!ok){
		ok=1;
		for (i=1;i<=M;++i)
			 if (d[y[i]]>d[x[i]]+c[i]){
				 ok=0;
				 d[y[i]]=d[x[i]]+c[i];
			 }
	}
	
	for (i=2;i<=N;++i)
		 if (d[i]==0x3f3f3f3f)
			  printf("0 ");
		 else
			 printf("%d ", d[i]);
		 
	return 0;

}