Cod sursa(job #641162)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 27 noiembrie 2011 14:20:24
Problema Algoritmul Bellman-Ford Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <math.h>

#define INF 1000000000
#define X 50010

long x[X * 5], y[X * 5], c[X * 5], cost[X], n, m, i, viz[X], muchie;

int main() {
	freopen("bellmanford.in", "r", stdin);
	freopen("bellmanford.out", "w", stdout);
	
	scanf("%ld %ld", &n, &m);
	muchie = m;

	for (i = 1; i <= n; ++i) cost[i] = INF;
	cost[1] = 0;
	
	for (i = 1; i <= m; ++i) scanf("%ld %ld %ld", &x[i], &y[i], &c[i]);
	
	long h = 0;
	long aux = 1;
	while (aux && h < n + 2) {
		aux = 0;
		++h;
		for (i = 1; i <= m; ++i) {
			if (cost[x[i]] + c[i] < cost[y[i]]) {
				cost[y[i]] = cost[x[i]] + c[i];
				viz[i] = 1;
				aux = 1;
			}
		}
	}
	
	if (h == n + 2) {
		printf("Ciclu negativ!\n");
	} else {
		for (i = 2; i <= n; ++i) {
			printf("%ld ", cost[i]);
		}
	}
		
	return 0;
}