Cod sursa(job #418464)

Utilizator O_NealS. Alex O_Neal Data 15 martie 2010 21:58:28
Problema Algoritmul Bellman-Ford Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#include<vector>
#define inf 250000001

struct muchie
{
	int x;
	int y;
	int c;
}muchii[250001];

int main()
{
	freopen("bellmanford.in","r",stdin);
	freopen("bellmanford.out","w",stdout);
	int n,m,d[50001];
	scanf("%d %d",&n,&m);
    memset(d,inf,n);
	for(int i=1; i<=m; ++i)
	{
		scanf("%d %d %d", &muchii[i].x,&muchii[i].y,&muchii[i].c);
		if(muchii[i].x==1) d[muchii[i].y]=muchii[i].c;
	}
	
	int gata=0,j;
	for(j=1;j<=m&&(!gata);++j)
	{
		gata=1;
		for(int i=1; i<=m; ++i)
			if(d[muchii[i].y]>d[muchii[i].x]+muchii[i].c)  
			{
				d[muchii[i].y]=d[muchii[i].x]+muchii[i].c;
				gata=0;
			}
	}
	if(!gata) printf("Ciclu negativ!");
	else for(int i=2; i<=n; ++i) printf("%d ",d[i]);
	return 0;
}