Pagini recente » Cod sursa (job #538762) | Cod sursa (job #34891) | Cod sursa (job #1020641) | Cod sursa (job #656926) | Cod sursa (job #2896796)
#include <bits/stdc++.h>
using namespace std;
int n, m, v[50001], ok;
vector<pair<int, int>> a[50001];
void dijikstra() {
vector<int> f(50001);
queue<int> q;
q.push(1);
v[1] = 0;
while(!q.empty()) {
int nod = q.front();
q.pop();
if(f[nod] >= n) {
ok = 1;
return;
}
f[nod]++;
//cout << v[nod] << ' ';
for(auto &[i, cost] : a[nod]) {
if(cost + v[nod] < v[i])
v[i] = cost + v[nod], q.push(i);
}
}
}
int main() {
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");
int p;
cin >> n >> p;
int x, y, k;
for(int i = 1; i <= p; i++) {
cin >> x >> y >> k;
a[x].push_back({y, k});
}
for(int i = 1; i <= n; i++)
v[i] = INT_MAX / 2 - 1;
dijikstra();
if(ok) {
cout << "Ciclu negativ!";
return 0;
}
for(int i = 2; i <= n; i++)
cout << v[i] << ' ';
return 0;
}