Cod sursa(job #412718)

Utilizator slayer4uVictor Popescu slayer4u Data 5 martie 2010 21:52:14
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>

long a, b, c, n, m, ok, rez[50001];

struct lol
{
	long a, b, c;
};
lol graf[250001];

int main()
{
	freopen ("dijkstra.in", "rt", stdin);
	freopen ("dijkstra.out", "wt", stdout);

	scanf("%ld %ld", &n, &m);

	for (long i = 1; i <= m; ++i)
	{
		scanf("%ld %ld %ld", &graf[i].a, &graf[i].b, &graf[i].c);
	}

	for (long i = 2; i <= n; ++i)
		rez[i] = 2147000000;
	
	
	ok = 1;
	while(ok)
	{
		ok = 0;
		for (long i = 1; i <= m; ++i)
		{
			if (rez[graf[i].a] + graf[i].c < rez[graf[i].b])
				rez[graf[i].b] = rez[graf[i].a] + graf[i].c, ok = 1;
		}
	}

	for (long i = 2; i <= n; ++i)
	{
		if (rez[i] != 2147000000)
			printf("%ld ", rez[i]);
		else
			printf("0 ");
	}
	printf("\n");

	return 0;
}