Cod sursa(job #702488)

Utilizator i.anna_mIlusca Ana-Maria i.anna_m Data 1 martie 2012 22:06:19
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
FILE *f,*g;
int d[50001],min,n,m,c[23001][24001],M[50001];
int main()
{
	f=fopen("dijkstra.in","r");
	g=fopen("dijkstra.out","w");
	fscanf(f,"%d%d",&n,&m);
	register int i,j;
	for(i=0;i<=n;++i)
		for(j=0;j<=n;++j)
			c[i][j]=999999999;
	int a,b,e;
	for(i=0;i<m;++i)
	{
		fscanf(f,"%d%d%d",&a,&b,&e);
		c[a][b]=e;
	}
	M[1]=1;
	for(i=1;i<=n;++i)
		d[i]=c[1][i];
	for(i=0;i<n-1;++i)
	{
		min=999999999;
		for(j=1;j<=n;++j)
			if(min>d[j] && M[j]==0)
			{
				min=d[j];
				a=j;
			}
		M[a]=1;
		for(j=1;j<=n;++j)
			if(M[j]==0 && d[j]>d[a]+c[a][j])
				d[j]=d[a]+c[a][j];
	}
	for(i=2;i<=n;++i)
	{
		if(d[i]!=999999999)
			fprintf(g,"%d ",d[i]);
		else
			fprintf(g,"0 ");
	}
	fclose(f);
	fclose(g);
}