Pagini recente » Cod sursa (job #2766168) | Cod sursa (job #1112761) | Cod sursa (job #54472) | Cod sursa (job #1565651) | Cod sursa (job #2796285)
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define pf push_front
#define MOD 1000000007
#define NMAX 50005
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
struct A
{
int y, cost;
};
vector < A > v[NMAX];
set < int > s;
int main()
{
ios_base::sync_with_stdio(false), cin.tie(0),cout.tie(0);
int n, m, x, y, z, i, nr[NMAX], r[NMAX];
fin >> n >> m;
while(m--)
{
fin >> x >> y >> z;
v[x].pb({y, z});
}
for(i = 1; i <= n; i++) nr[i] = 0, r[i] = INT_MAX;
r[1] = 0, s.insert(1);
while(s.empty() == 0)
{
x = *s.begin(), s.erase(s.begin());
nr[x]++;
if(nr[x] == n)
{
fout << "Ciclu negativ!";
break;
}
else for(auto it:v[x]) if(r[x] + it.cost < r[it.y]) r[it.y] = r[x] + it.cost, s.insert(it.y);
}
if(nr[x] != n) for(i = 2; i <= n; i++) fout << r[i] << ' ';
return 0;
}