Cod sursa(job #290533)

Utilizator snaked31Stanica Andrei snaked31 Data 28 martie 2009 01:19:41
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>

#define INF 50000010
#define mm 250010
#define nm 50010

long long n, m, i, j;
long long a, b, c;
long long Ms[nm], Md[nm], Mc[nm];
long long d[nm];


int main()

{
	freopen("dijkstra.in", "r", stdin);
	freopen("dijkstra.out","w",stdout);


	scanf("%lld %lld ", &n, &m);
	for (i=1; i<=m; ++i)
	{
		scanf("%lld %lld %lld", &a, &b, &c);
		//v[a][++v[a][0]] = b;
		//u[a][v[a][0]] = c;
		Ms[i] = a;
		Md[i] = b;
		Mc[i] = c;
	}
	d[1] = 0;
	for (i=2; i<=n; ++i)
		d[i] = INF;

	for (i=1; i<=n; ++i)
	{
		for (j=1; j<=m; ++j)
		{
			a = Ms[i];
			b = Md[i];
			c = Mc[i];
			if (d[b] > (d[a] + c))
				d[b] = d[a] + c;
		}
	}

	for (i=2; i<=n; ++i)
	{
		if (d[i] == INF)
			d[i] = 0;
		printf("%lld ", d[i]);
	}
	printf("\n");



	fclose(stdin);
	fclose(stdout);

	return 0;
}