Cod sursa(job #193170)

Utilizator MirageRobert Sandu Mirage Data 2 iunie 2008 20:00:26
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
#define N 250000
int n,j;
int e; 
int a[N],b[N],c[N]; 
int d[50000]; 
#define INFINITY 1000000

void printDist() {
	int i;
	for (i = 1; i < n; ++i)
		if(d[i]==INFINITY)
			printf("0 ");
		else
			printf("%d ",d[i]);
	printf("\n");
}
void bellman_ford(int s) {
	int i, j;
	for (i = 0; i < n; ++i)
		d[i] = INFINITY;
	d[s] = 0;
	for (i = 0; i < n - 1; ++i)
		for (j = 0; j < e; ++j)
			if (d[a[j]] + c[j] < d[b[j]])
				d[b[j]] = d[a[j]] + c[j];
}
int main () {
	int i;
	freopen("a.in","r",stdin);
	freopen("a.out","w",stdout);
	scanf("%d", &n);
	scanf("%d",&e);
	for(i=0;i<e;++i){
		scanf("%d%d%d",&a[i],&b[i],&c[i]);
		--a[i];--b[i];
	}
	bellman_ford(0);
	printDist();
	return 0;
}