Cod sursa(job #1050887)

Utilizator roby2001Sirius roby2001 Data 9 decembrie 2013 12:54:11
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
/*
	Keep It Simple!
*/

#include<stdio.h>
#include<list>

using namespace std;

int n,m;
long long L[50001];
bool viz[50001];

list< pair<int,int> > G[50001];


void Dijkstra()
{
	L[1] = 0;
	for(int i=1;i<=n;i++)
		if(!viz[i])
		{
			for(list< pair<int,int> >::iterator it = G[i].begin(); it!=G[i].end(); it++)
				if(L[it->first] > ( L[i] + it->second) )
					L[it->first] = L[i] + it->second;
			viz[i] = 1;
		}
}

int main()
{
	freopen("dijkstra.in","r",stdin);
	freopen("dijkstra.out","w",stdout);
	
	scanf("%d %d",&n,&m);
	int x,y,c;
	for(int i=1;i<=n;i++)
	{
		scanf("%d %d %d",&x,&y,&c);
		G[x].push_back( make_pair(y,c) );
	}
	for(int i=1;i<=n;i++) L[i] = 2000000000;
	Dijkstra();
	for(int i=2;i<=n;i++)
		printf("%lld ",L[i]);
}