Cod sursa(job #1124802)

Utilizator PlatenitesVoicu Cristian Platenites Data 26 februarie 2014 13:49:22
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
#define inf 999999999;

using namespace std;

ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int m[101][101],n,s,a,b,d,veniri[101],cost[101],viz[101],p,u,c[101],i;
int main ()
{
	f>>n>>s;
	while(f>>a>>b>>d)
	{
		m[a][b]=d;
		veniri[b]=1;
	}
	for(i=1;i<=n;i++)
		if(veniri[i]==0)
		{
			viz[i]=1;
			cost[i]=-1;
		}
	p=u=1;
	c[u]=s;
	viz[s]=1;
	while(p<=u)
	{
		for(i=1;i<=n;i++)
		{
			if(viz[i]==0&&m[c[p]][i]>0)
			{
				c[++u]=i;
				viz[i]=1;
				cost[i]=cost[c[p]]+m[c[p]][i];
			}
			if(cost[i]>cost[c[p]]+m[c[p]][i]&&m[c[p]][i]!=0)
				cost[i]=cost[c[p]]+m[c[p]][i];
		}
		p++;
	}
	for(i=1;i<=n;i++)
		g<<cost[i]<<" ";
	return 0;
}