Pagini recente » Cod sursa (job #3225727) | Cod sursa (job #3042038) | Cod sursa (job #2655936) | Cod sursa (job #2903098) | Cod sursa (job #2355728)
#include <bits/stdc++.h>
using namespace std;
int n,m,x,y,c,cst[50001],cnt[50001],ap[50001],i,vrf;
vector <int> v[50001];
vector <int> val[50001];
queue <int> q;
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&c);
v[x].push_back(y);
val[x].push_back(c);
}
for(i=1;i<=n;i++) cst[i]=99999999;
q.push(1);
cst[1]=0;
ap[1]=1;
while(!q.empty())
{
vrf=q.front();
q.pop();
ap[vrf]=0;
for(i=0;i<v[vrf].size();i++)
if(cst[vrf]+val[vrf][i]<cst[v[vrf][i]])
{
cst[v[vrf][i]]=cst[vrf]+val[vrf][i];
if(!ap[v[vrf][i]])
{
q.push(v[vrf][i]);
ap[v[vrf][i]]=1;
if(++cnt[v[vrf][i]]>n)
{
printf("Ciclu negativ!");
return 0;
}
}
}
}
for(i=2;i<=n;i++)
printf("%d ",cst[i]);
return 0;
}