Pagini recente » Cod sursa (job #669049) | Cod sursa (job #2323838) | Cod sursa (job #1320381) | Cod sursa (job #69893) | Cod sursa (job #2168574)
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
int N,M,x,y,c,d[50001],gr[50001];
vector <int> G[50001],C[50001];
queue <int> q;
int bellmanford(){
for(int i=2;i<=N;++i)d[i]=INF;
q.push(1);
while(!q.empty()){
x=q.front();
++gr[x];
if(gr[x]>N) return-1;
q.pop();
for(int i=0;i<G[x].size();++i)
if(d[G[x][i]]>d[x]+C[x][i]){
d[G[x][i]]=d[x]+C[x][i];
q.push(G[x][i]);
}
}
return 1;
}
int main()
{
f>>N>>M;
while(M--){
f>>x>>y>>c;
G[x].push_back(y);
C[x].push_back(c);
}
if(bellmanford()==-1)g<<"Ciclu negativ!";
else{
for(int i=2;i<=N;++i)
if(d[i]==INF)g<<0<<' ';
else g<<d[i]<<' ';
}
return 0;
}