Pagini recente » Cod sursa (job #1716864) | n | Cod sursa (job #950751) | Cod sursa (job #1333808) | Cod sursa (job #2393067)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bellmanford.in");
ofstream out("bellmanford.out");
int n, m, distanta[50001], f[50001];
vector < pair <int, int> > Muchii[50001];
queue <int> coada;
inline void citire()
{
int x, y, c;
in >> n >> m;
for (int i = 1; i <= m; ++i)
{
in >> x >> y >> c;
Muchii[x].push_back({y, c});
}
}
inline void BFS(int nodStart)
{
int nod, vecin, cost;
coada.push(nodStart);
while (!coada.empty())
{
nod = coada.front();
++f[nod];
coada.pop();
for (int i = 0; i < Muchii[nod].size(); ++i)
{
vecin = Muchii[nod][i].first;
cost = Muchii[nod][i].second;
if (distanta[vecin] > distanta[nod] + cost)
{
if (f[vecin] == n)
{
out << "Ciclu negativ!";
return;
}
distanta[vecin] = distanta[nod] + cost;
coada.push(vecin);
}
}
}
for (int i = 2; i <= n; ++i)
out << distanta[i] << " ";
}
int main()
{
citire();
for (int i = 2; i <= n; ++i)
distanta[i] = (1 << 29);
BFS(1);
return 0;
}