Pagini recente » Cod sursa (job #454238) | Cod sursa (job #3261569) | Cod sursa (job #2153997) | ONIS 2015, Solutii Runda 1 | Cod sursa (job #1111302)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
struct muchie {
int x, y, c;
};
const int INF = 1000000000;
int n, i, j, a, b, c, m, vertex[50002];
muchie edge[250002];
int main() {
fin >> n >> m;
for(i = 1; i <= m; i++) {
fin >> a >> b >> c;
edge[i] = {a, b, c};
}
vertex[1] = 0;
for(i = 2; i <= n; i++) {
vertex[i] = INF;
}
for(i = 1; i <= n; i++) {
for(j = 1; j <= m; j++) {
a = edge[j].x;
b = edge[j].y;
c = edge[j].c;
if (vertex[b] > vertex[a] + c) {
vertex[b] = vertex[a] + c;
}
}
}
for(i = 1; i <= m; i++) {
a = edge[i].x;
b = edge[i].y;
c = edge[i].c;
if (vertex[b] > vertex[a] + c) {
fout << "Ciclu negativ!";
return 0;
}
}
for(i = 2; i <= n; i++) {
fout << vertex[i] << ' ';
}
fin.close();
fout.close();
return 0;
}