Pagini recente » Cod sursa (job #282355) | Cod sursa (job #2972302) | Cod sursa (job #2023578) | Cod sursa (job #2664964) | Cod sursa (job #3284420)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
const int N = 50002;
const int oo = 1000000010;
int n,m,d[N],pass[N],inQ[N];
vector<pair<int,int>> v[N];
queue<int> q;
int main()
{
/// citirea grafului
f>>n>>m;
for(int i=1; i<=m; i++)
{
int nod,vec,cost;
f>>nod>>vec>>cost;
v[nod].push_back(make_pair(vec,cost));
}
for(int i=2;i<=n;i++)
d[i]=oo;
q.push(1);
inQ[1]=1;
while(q.size())
{
int nod=q.front();
q.pop();
inQ[nod]=0;
for(auto it:v[nod])
{
int vec,costMuchie;
tie(vec,costMuchie)=it;
if(d[vec]>d[nod]+costMuchie)
{
pass[vec]++;
if(pass[vec]==n)
{
g<<"Ciclu negativ!\n";
return 0;
}
d[vec]=d[nod]+costMuchie;
if(!inQ[vec])
{
q.push(vec);
inQ[vec]=1;
}
}
}
}
for(int i=2;i<=n;i++)
{
if(d[i]==oo)
d[i]=0;
g<<d[i]<<' ';
}
g<<'\n';
return 0;
}