Pagini recente » Cod sursa (job #2633364) | Cod sursa (job #855246) | Cod sursa (job #235621) | Cod sursa (job #1136869) | Cod sursa (job #962260)
Cod sursa(job #962260)
#include<stdio.h>
#include<vector>
#define inf 1000000000
using namespace std;
int M,N,x,y,c,dist[55000];
struct muchie
{
int nod1;
int nod2;
int cost;
} m[255000];
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[i].nod1=x;
m[i].nod2=y;
m[i].cost=c;
}
for(int i=2;i<=N;++i)
dist[i]=inf;
for(int j=1;j<N;++j)
{
int ok=0;
for(int i=1;i<=M;++i)
if(dist[m[i].nod1]+m[i].cost<dist[m[i].nod2])
{
ok=1;
dist[m[i].nod2]=dist[m[i].nod1]+m[i].cost;
}
if(ok==0)
break;
}
for(int i=1;i<=M;++i)
if(dist[m[i].nod1]+m[i].cost<dist[m[i].nod2])
{
printf("Ciclu negativ!");
return 0;
}
for(int i=2;i<=N;++i)
printf("%d ",dist[i]);
return 0;
}