Cod sursa(job #280337)

Utilizator omu_salcamtache tudor omu_salcam Data 13 martie 2009 12:28:24
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<stdio.h>
#define PLM 50000000
//MUIE PALI :>
FILE *f1,*f2;
long a,b,c,n1,n2,i,j,k,N,M,v,ok;
struct muchie{
	long unu;
	long doi;
	int val;
};
long d[200002];
muchie m[250002];
void bell(){
	d[1]=0;
	for(i=1;i<N;i++){
		ok=0;
		for(j=1;j<=M;j++){
			if(d[m[j].doi]>d[m[j].unu]+m[j].val){
				d[m[j].doi]=d[m[j].unu]+m[j].val;
				ok=1;
			}
		}
		if(!ok){
			return;
		}
	}
}
int main(){
	f1=fopen("dijkstra.in","r");
	f2=fopen("dijkstra.out","w");
	fscanf(f1,"%ld%ld",&N,&M);
	for(i=1;i<=M;fscanf(f1,"%ld%ld%d",&m[i].unu,&m[i].doi,&m[i].val),d[i]=PLM,i++);
	bell();
	for(i=2;i<=N;i++){
		if(d[i]!=PLM){
			fprintf(f2,"%ld ",d[i]);
		}
		else{
			fprintf(f2,"0 ");
		}
	}
	return 0;
}