Cod sursa(job #659184)

Utilizator NitaMihaitavoidcube NitaMihaita Data 10 ianuarie 2012 12:26:49
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#include<iostream>
using namespace std;
int main ()
{
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int i,n,j,l,inf=999999,min,poz,marcate=0,m;
f>>n>>m;
int d[n+1],t[n+1],a[n+1][n+1],marc[n+1];
for(i=1;i<=n;i++)
	for(j=i,marc[i]=0;j<=n;j++)
	{
	if(i!=j)a[i][j]=a[j][i]=inf;
	else a[i][j]=0;
	}
while(f>>i>>j>>l)
	a[i][j]=l;
d[1]=0;t[1]=1;
for(i=2;i<=n;i++)
	{
	d[i]=a[1][i];
	t[i]=1;
	}
marc[1]=1;marcate++;
while(marcate!=n-1)
{
	min=inf;poz=0;
	for(i=2;i<=n;i++)
		if(marc[i]==0 and d[i]<min){min=d[i];poz=i;}
	marc[poz]=1;
	marcate++;
	for(i=2;i<=n;i++)
		if(d[poz]+a[poz][i]<d[i])
			{
			d[i]=d[poz]+a[poz][i];
			t[i]=poz;
			}
}
for(i=2;i<=n;i++)
	if(d[i]==inf)g<<"0 ";
	else g<<d[i]<<" ";
g<<"\n";
f.close();
g.close();
return 0;
}