Cod sursa(job #1052757)

Utilizator span7aRazvan span7a Data 11 decembrie 2013 19:31:46
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<fstream>
#define M 2000000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct nod
{
	int v;
	short c;
	nod* leg;
};
typedef nod* PNod;
PNod L[50001];
void add(int x,int y,int z)
{
	PNod p=new nod;
	p->v=y;
	p->c=z;
	p->leg=L[x];
	L[x]=p;
		
}
int cost[50001],viz[50001];
PNod p;
int main()
{	int n,m,x,y,z,valmin,i,l,k;
	f>>n>>m;
	for(i=1;i<=m;i++)
	{	f>>x>>y>>z;
		add(x,y,z);
	}
	viz[1]=1;
	for(i=0;i<=n+1;i++)
		cost[i]=M;
	for(p=L[1];p;p=p->leg)
		cost[p->v]=p->c;
	for(l=1;l<n;l++)
	{
		valmin=M;
		for(int j=1;j<=n;j++)if(cost[j]<valmin&&!viz[j]){valmin=cost[j];k=j;}
		viz[k]=1;
		for(p=L[k];p;p=p->leg)
			if(cost[p->v]>valmin+p->c)cost[p->v]=valmin+p->c;
	}
	for(i=2;i<=n;i++)
		  {  if(cost[i]==M)
                  g<<0<<" ";
              else
                  g<<cost[i]<<" ";
		  }
	return 0;
}