Cod sursa(job #552464)

Utilizator arnold23Arnold Tempfli arnold23 Data 12 martie 2011 13:27:56
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
#define siz 50010

using namespace std;

struct adat {
	long kezd,veg,ut;
};

long n,m,i,j,a,b,x,dist[siz];
char ok;
vector< adat > v;

int neg() {
	for (int q=0;q<m;++q)
		if (dist[v[q].kezd]>dist[v[q].kezd]+v[q].ut) return 1;
	return 0;
}

int main() {
	ifstream in("bellmanford.in");
	ofstream out("bellmanford.out");

	in >> n >> m;
	for (i=1;i<=n;++i) {
		in >> a >> b >> x;
		v.push_back((adat){a,b,x});
	}

	ok=1;
	for (i=1;i<n&&ok==1;++i) {
		ok=0;
		for (j=0;j<m;++j)
			if (dist[v[j].veg]>dist[v[j].kezd]+v[j].ut) {
				dist[v[j].veg]=dist[v[j].kezd]+v[j].ut;
				ok=1;
			}
	}


	if (neg()) out << "Ciclu negativ!"; else
		for (i=2;i<=n;++i) out << dist[i] << " ";

	in.close();
	out.close();

	return 0;
}