Cod sursa(job #408441)

Utilizator moonRadu Chichi moon Data 3 martie 2010 02:45:03
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<iostream.h>
#include<fstream.h>
#include <stdio.h>
#define INF 32000
long n,i,j,d[50005],e1,e2,c,a[5000][50005],sol[50005],u;
long m;
int main()
{
	freopen("dijkstra.in","r",stdin);
	freopen("dijkstra.out","w",stdout);
	cin>>n>>m;
	for(i=1;i<=m;i++)
	{
		cin>>e1>>e2>>c;
		a[e1][e2]=c;
	}
	
	for(i=1;i<=n;i++) 
		{
			if(i!=1) d[i]=INF;
			else d[i]=0;
	}
	sol[1]=1;
	u=1;
	
for(j=1;j<=n;j++)
	for(i=1;i<=n;i++)
		if(a[sol[j]][i]) 
		{
			if(j!=1) if(a[sol[j]][i]+d[sol[j]]<d[i]) d[i]=a[sol[j]][i]+d[sol[j]];
			if(j==1)if(a[sol[j]][i]<d[i]) d[i]=a[sol[j]][i];
			u++;
			sol[u]=i;
		}


	
for(i=2;i<=n;i++){ if(d[i]==INF) cout<<0<<" "; else cout<<d[i]<<" "; }
}