Pagini recente » Cod sursa (job #1047636) | Cod sursa (job #671858) | Cod sursa (job #3013) | Cod sursa (job #1444532) | Cod sursa (job #2667075)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bellmanford.in");
ofstream out("bellmanford.out");
int n,m,d[50001],f[50001];
struct muchie
{ int nod,cost;
};
vector <muchie> v[50001];
queue <int> q;
void bellmanford(int nod)
{ d[nod]=0;
q.push(nod);
while(!q.empty())
{ int x=q.front();
q.pop();
f[x]++;
if(f[x]>n)
{ out<<"Ciclu negativ!";
return;
}
for(auto it: v[x])
if(d[it.nod]>d[x]+it.cost)
d[it.nod]=d[x]+it.cost,q.push(it.nod);
}
}
int main()
{ in>>n>>m;
for(int i=1;i<=m;i++)
{ int x,y,c;
in>>x>>y>>c;
v[x].push_back({y,c});
}
for(int i=1;i<=n;i++)
d[i]=1<<30;
bellmanford(1);
for(int i=1;i<=n;i++)
if(d[i]==1<<30)
d[i]=0;
for(int i=2;i<=n;i++)
out<<d[i]<<" ";
out<<'\n';
in.close();
out.close();
return 0;
}