Pagini recente » Istoria paginii runda/28_februarie_simulare_oji_2024_clasele_11_12/clasament | Cod sursa (job #2907284) | Cod sursa (job #2363310) | Cod sursa (job #273483) | Cod sursa (job #3173279)
#include <bits/stdc++.h>
using namespace std;
struct vertex {
int from, to, cost;
} e[250001];
int n, m, dist[50001];
int main() {
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");
cin >> n >> m;
for (int i = 2; i <= n; ++i) {
dist[i] = 1e9;
}
dist[1] = 0;
for (int i = 1; i <= m; ++i) {
cin >> e[i].from >> e[i].to >> e[i].cost;
}
for (int i = 1; i <= n - 1; ++i) {
bool changed = false;
for (int j = 1; j <= m; ++j) {
if (dist[e[j].from] + e[j].cost < dist[e[j].to]) {
dist[e[j].to] = dist[e[j].from] + e[j].cost;
changed = true;
}
}
if (changed == false) {
for (int i = 2; i <= n; ++i) {
cout << dist[i] << " ";
}
return 0;
}
}
for (int j = 1; j <= m; ++j) {
if (dist[e[j].from] + e[j].cost < dist[e[j].to]) {
cout << "Ciclu negativ!";
return 0;
}
}
for (int i = 2; i <= n; ++i) {
cout << dist[i] << " ";
}
}