Cod sursa(job #703649)

Utilizator alexsuciuAlex Suciu alexsuciu Data 2 martie 2012 13:24:15
Problema Algoritmul lui Dijkstra Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;
const float PInfinit=1.e20;
float a[1000][1000],mini,d[1000],c;
int i,n,m,t[1000],poz,j,s[1000];
int main()
{ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
f>>n>>m;
for(i=1;i<=n;i++)
	for(j=1;j<=n;j++)
		if(i==j) a[i][j]=0;
	else a[i][j]=PInfinit;
		while(f>>i>>j>>c)
	a[i][j]=c;
		s[1]=1;
		d[1]=a[1][1];
		for(i=2;i<=n;i++)
			{d[i]=a[1][i];
				if(d[i]<PInfinit) t[i]=1;}
		for(i=1;i<n;i++)
		{mini=PInfinit;
		for(j=1;j<=n;j++)
			if(s[j]==0)
				if(d[j]<mini)
				{mini=d[j];
				poz=j;}
				s[poz]=1;
				
	for(j=1;j<=n;j++)
		if(s[j]==0)
			if(d[j]>d[poz]+a[poz][j])
			{d[j]=d[poz]+a[poz][j];
			t[j]=poz;}}
		for(i=2;i<=n;i++)
			if (d[i]==PInfinit) g<<0<<" ";
else g<<d[i]<<" ";}