Pagini recente » Cod sursa (job #2112990) | Cod sursa (job #1416048) | Cod sursa (job #2372997) | Cod sursa (job #1179494) | Cod sursa (job #2619223)
#include <bits/stdc++.h>
using namespace std;
const int mxN=500100;
int n,m,a,b,c,dist[mxN],cnt[mxN],aux=0;
vector < pair<int,int> > g[mxN];
void BF (int start){
queue <int> q;
q.push(start);
dist[start]=0;
while(!q.empty()){
int em=q.front();
q.pop();
for (int i=0; i<g[em].size(); i++){
int node = g[em][i].first;
int len = g[em][i].second;
if (dist[em]+len<dist[node]){
if (cnt[node]==n) {
aux=1;
return;
}
dist[node]=dist[em]+len;
cnt[node]++;
q.push(node);
}
}
}
}
int main()
{
//ifstream cin("bellmanford.in");
//ofstream cout("bellmanford.out");
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for (int i=0; i<m; i++){
cin>>a>>b>>c;
g[a].push_back({b,c});
}
fill(dist,dist+mxN,INT_MAX);
BF(1);
if (!aux)
for (int i=2; i<=n; i++)
cout<<dist[i]<<" ";
else cout<<"Ciclu negativ!";
return 0;
}