Cod sursa(job #534801)

Utilizator idomiralinIdomir Alin idomiralin Data 16 februarie 2011 11:24:03
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
# include <stdlib.h>
# include <cstdio>

using namespace std;

struct camp
{
       long a, b;
       }e[250005];
long cost[50005], c[250005], m, n;

int verif()
{long i;
     for (i = 1; i <= m; i++)
        if (cost[e[i].a] + c[i] < cost[e[i].b])
           return 1;
        return 0;
     }
int main()
{long i, j;
    freopen("bellmanford.in","r",stdin);
    freopen("bellmanford.out","w",stdout);
    
    scanf("%lld%lld",&n,&m);
    
    for (i = 1; i <= m; i++)
        scanf("%lld%lld%lld", &e[i].a, &e[i].b, &c[i]);
        
    cost[1] = 0;
    for (i = 2; i <= n; i++)
    cost[i] = 100000;
   
    
    for (i = 1; i <= n; i++)
        for (j = 1; j <= m; j++)
        if (cost[e[j].a] + c[j] < cost[e[j].b]) 
                         cost[e[j].b] = cost[e[j].a] + c[j];
    
    if (verif()) 
    {
                 printf("Ciclu negativ");
                 return 0;
                 }
    
    for (i = 2; i <= n; i++)
    printf("%lld ",cost[i]);
    
return 0;
}