Pagini recente » Cod sursa (job #1215888) | Cod sursa (job #1958438) | Cod sursa (job #1232898) | Cod sursa (job #1449446) | Cod sursa (job #2829539)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
const int NMAX=50005;
const int inf=2e9;
int N, M, d[NMAX], viz[NMAX];
vector<pair<int,int>> g[NMAX];
queue<int> q;
bool inQueue[NMAX];
bool bellmanford(int sursa)
{
for(int i=1;i<=N;i++)
d[i]=inf;
d[sursa]=0;
q.push(sursa);
inQueue[sursa]=true;
int x;
while(!q.empty())
{
x=q.front();
q.pop();
viz[x]++;
inQueue[x]=false;
if(viz[x]>=N)
return false;
for(auto next: g[x]){
if(d[next.first]>d[x]+next.second){
d[next.first]=d[x]+next.second;
if(inQueue[next.first]==false){
inQueue[next.first]=true;
q.push(next.first);
}
}
}
}
return true;
}
int main()
{
fin>>N>>M;
int x, y, z;
for(int i=1;i<=M;i++){
fin>>x>>y>>z;
g[x].push_back({y,z});
}
if(bellmanford(1)){
for(int i=2;i<=N;i++)
fout<<d[i]<<' ';
}
else
fout<<"Ciclu negativ!";
fin.close();
fout.close();
return 0;
}