Pagini recente » Cod sursa (job #2129088) | Cod sursa (job #2937633) | Cod sursa (job #1150637) | Cod sursa (job #12842) | Cod sursa (job #962320)
Cod sursa(job #962320)
#include<stdio.h>
#include<vector>
#include<deque>
#define inf 1000000000
using namespace std;
int M,N,x,y,c,dist[55000],nb[55000];
deque<int> d;
struct muchie
{
int nod;
int cost;
} m;
vector<muchie> a[55000];
int main()
{
freopen("bellmanford.in","r",stdin);
freopen("bellmanford.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=1;i<=M;++i)
{
scanf("%d%d%d",&x,&y,&c);
m.nod=y;
m.cost=c;
a[x].push_back(m);
}
for(int i=2;i<=N;++i)
dist[i]=inf;
d.push_back(1);
while(d.empty()==0)
{
x=d.front();
d.pop_front();
++nb[x];
if(nb[x]>N)
{
printf("Ciclu negativ!");
return 0;
}
y=a[x].size();
for(int i=0;i<y;++i)
if(dist[x]+a[x][i].cost < dist[a[x][i].nod])
{
dist[a[x][i].nod]=dist[x]+a[x][i].cost;
d.push_back(a[x][i].nod);
}
}
for(int i=2;i<=N;++i)
printf("%d ",dist[i]);
return 0;
}