Cod sursa(job #510637)

Utilizator GeorgeGradinariuGradinariu George GeorgeGradinariu Data 12 decembrie 2010 13:12:41
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
using namespace std;
int a[50][50],n,viz[50],cost[50],m;

void citire()
{
	ifstream in("dijkstra.in");
	int i,j,k;
	in>>n>>m;
	for(i=0;i<=n;i++)
		for(j=0;j<=n;j++)
			a[i][j]=-1;
	
	while(in>>i>>j>>k)
		a[i][j]=a[j][i]=k;
	in.close();
	
}

void dijkstra()
{
	int dmin=3200,min,i,x,nc=1;
	for(i=1;i<=n;i++)
		cost[i]=3200;
	
	cost[nc]=0;
	viz[nc]=1;

	for(x=1;x<=n;x++)
	{dmin=3200;
	for(i=2;i<=n;i++)
	{
		if(a[nc][i]!=-1&&viz[i]==0)
		{
		if(a[nc][i]<=dmin)
			{min=i;
		dmin=a[nc][i];
			}
		if((a[nc][i]+cost[nc])<cost[i])
			cost[i]=a[nc][i]+cost[nc];
		}
	}
	viz[nc]=1;
	nc=min;
	
	}

}
int main ()
{
	int i;
	ofstream out ("dijkstra.out");
	citire();
	dijkstra();
	for(i=2;i<=n;i++)
		out<<cost[i]<<" ";
	
	out.close();
	return 0;
}