Mai intai trebuie sa te autentifici.

Cod sursa(job #264146)

Utilizator vladbBogolin Vlad vladb Data 21 februarie 2009 16:08:40
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream.h>

ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

int n,m,a[100][100],min,t[1000],q[1000],p=1,u,s[1000];
long d[1000];

int vf()
{	long min,x,i,j;
	min=32000;
	for(i=1;i<=n;i++)
		if(q[i]==1) for(j=1;j<=n;j++)
				if(s[j]==0) if(a[i][j]<min){ min=a[i][j];
									 x=i;
									}
	q[x]=0;
	p++;
	return x;
}


int main()
{       int x,y,z,i,j;
	fin>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			a[i][j]=32000;
	for(i=1;i<=m;i++)
	{	fin>>x>>y>>z;
		a[x][y]=z;
	}
	for(i=1;i<=n;i++)
	{	d[i]=32000;
		t[i]=-1;
		q[i]=1;
	}
	d[1]=0;
	while(p<=n)
	{	if(p>1) u=vf();
		  else { u=1;
			 p++;
		       }
		s[u]=1;
		for(i=1;i<=n;i++)
			if(d[i]>d[u]+a[u][i])
			{	d[i]=d[u]+a[u][i];
			 t[i]=u;
			}
	}
	for(i=2;i<=n;i++)
		fout<<d[i]<<" ";
	fin.close();
	fout.close();
	return 0;
}