Cod sursa(job #1211371)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 22 iulie 2014 14:47:38
Problema Algoritmul Bellman-Ford Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream ka("bellmanford.in");
ofstream ki("bellmanford.out");
const int N_MAX = 50000;
const int M_MAX = 250000;
int n, m, x, y, c, distanta[N_MAX + 1];
struct muchie
{
    int x, y, c;
}muchii[M_MAX + 1];

int main()
{
    ka >> n >> m;
    for(int i = 1; i <= m; i++)
    {
        muchie muchie;
        ka >> muchie.x >> muchie.y >> muchie.c;
        muchii[i] = muchie;
    }
    distanta[1] = 0;
    for(int i = 2; i <= n; i++)
        distanta[i] = 0x3fffffff;

    bool schimbat = true;
    for(int i = 1; i <= n && schimbat; i++)
    {
        schimbat = false;
        for(int j = 1; j <= m; j++)
        {
            if(distanta[muchii[j].x] + muchii[j].c < distanta[muchii[j].y])
            {
                distanta[muchii[j].y] = distanta[muchii[j].x] + muchii[j].c;
                schimbat = true;
            }
        }
    }
    if(schimbat)
        ki << "Ciclu negativ!\n";
    else
        for(int i = 2; i <= n; i++)
            ki << distanta[i] << " ";
}