Pagini recente » Cod sursa (job #842990) | Cod sursa (job #1217843) | Cod sursa (job #2060878) | Cod sursa (job #756175) | Cod sursa (job #3199066)
#include <fstream>
#include <queue>
#include <vector>
#define dim 50002
#define pii pair<int,int>
#define inf 0x3f3f3f3f
using namespace std;
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");
int n,m,v[dim],d[dim],cnt[dim];
vector<pii>V[dim];
queue<int>Q;
void bellman(){
for(int i=2;i<=n;++i) d[i]=inf;
Q.push(1);
v[1]=1;
while(!Q.empty()){
int val=Q.front();
Q.pop();
v[val]=0;
for(auto vecc:V[val]){
int cost=vecc.first;
int vec=vecc.second;
if(d[vec]>d[val]+cost){
d[vec]=d[val]+cost;
if(!v[vec]){
Q.push(vec);
v[vec]=1;
cnt[vec]++;
if(cnt[vec]>n-1){
cout<<"Ciclu negativ!";
exit(0);
}
}
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;++i){
int a,b,c;
cin>>a>>b>>c;
V[a].push_back({c,b});
}
bellman();
for(int i=2;i<=n;++i) cout<<d[i]<<" ";
return 0;
}