Cod sursa(job #276983)

Utilizator dan_10Dan Alexandru dan_10 Data 11 martie 2009 14:08:44
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>

struct muchie{	int x,y,c;};
muchie a[50005];
long n,m,d[50005];
const long max=200000;

void citire()
{		freopen("dijkstra.in","r",stdin);
			scanf("%d %d",&n,&m);
			for(int i=1;i<=m;i++)
				{		scanf("%d %d %d",&a[i].x,&a[i].y,&a[i].c);
						if(a[i].x==1) d[a[i].y]=a[i].c;
				}
		for(int i=1;i<=n;i++)
			if(d[i]==0) d[i]=max;

}
int main()
{	 	citire();
		int	cont=1;
		while(cont)
		{	cont=0;
			for(int i=1;i<=m;i++)
				if(d[a[i].y]>d[a[i].x]+a[i].c)
					  {	d[a[i].y]=d[a[i].x]+a[i].c;
						cont=1;
					  }
		}
		freopen("dijkstra.out","w",stdout);
		for(int i=2;i<=n;i++)
			  {  if(d[i]==max) printf("0 ");
				  printf("%d ",d[i]);
			  }
		return 0;
}