Cod sursa(job #547902)

Utilizator moonRadu Chichi moon Data 6 martie 2011 19:58:35
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<iostream>
#include<fstream>
using namespace std;
int viz[50001],d[50001],a[20001][20001],n,m;


int rec(int x)
{
	int i;
	viz[x]=1;
	for(i=1;i<=n;i++)
		if(a[x][i] && viz[i]==0)
		{
			if(d[x]+a[x][i]<d[i]) d[i]=d[x]+a[x][i];
			rec(i);
		}
	viz[x]=0;

}
int main()
{
	int i,aa,bb,cc;
	ifstream f("dijkstra.in");
	ofstream g("dijkstra.out");
	f>>n>>m;
	for(i=1;i<=m;i++)
	{
		f>>aa>>bb>>cc;
		a[aa][bb]=cc;
	}
	for(i=2;i<=n;i++)
		if(a[1][i])
			d[i]=a[1][i];
		else d[i]=32000;
	viz[1]=1;	
	for(i=2;i<=n;i++)
		if(a[1][i])
		{
			viz[i]=1;
			rec(i);
			viz[i]=0;
		}
			
		
	for(i=2;i<=n;i++)
		if(d[i]==32000) g<<"0 ";
	else
		g<<d[i]<<" ";
}