Cod sursa(job #677150)

Utilizator micutuzBalog Adrian micutuz Data 9 februarie 2012 21:29:58
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<iostream>
#include<fstream>
#define DN 9999999
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

struct nod
{
	int c; int nd; 
	nod *urm;
};
nod *a[50005], *p;
int d[250005];

void creare(int x, int y, int cost)
{
	nod *q=new nod;
	q->nd=y;
	q->urm=a[x];
	q->c=cost;
	a[x]=q;
}

int main()
{
	int n, m,x,y,z, i;
	fin>>n>>m;
	for(i=2;i<=n;i++)// creare vector dim maxim
		d[i]=DN;
	
	for(i=1;i<=m;i++) // citire
	{	
		fin>>x>>y>>z; 
		creare(x,y,z);
		if(x==1)
			d[y]=z;
	}
	
	d[1]=0;
	
	for(i=1;i<=n;i++)
	{
		p=a[i];
		while(p!=NULL)
		{	
			if(d[p->nd]>d[i]+p->c)
				d[p->nd]=d[i]+p->c;
			p=p->urm;
		}
	}
	
	for(i=2;i<=n;i++)
		if(d[i]!=DN)
			fout<<d[i]<<" ";
		else
			fout<<0<<" ";
}