Cod sursa(job #2566806)

Utilizator natrovanCeval Marius natrovan Data 3 martie 2020 12:50:41
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <vector>
#define MAX 2100000000

using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");

struct muchie{
    int vecin, cost;
};
vector<muchie>graf[50005];
int distTo[50005], N, M, x, y, c;

int main()
{
    fin >> N >> M;
    for(int i = 1; i <= N; i++){
        fin >> x >> y >> c;
        muchie m; m.vecin = y; m.cost = c;
        graf[x].push_back(m);
    }

    for(int i = 1; i <= N; i++)
        distTo[i] = MAX;

    distTo[1] = 0;
    for(int j = 1; j < M; j++)
        for(int i = 1; i <= N; i++)
            for(auto x: graf[i])
                if(distTo[i] + x.cost < distTo[x.vecin])
                    distTo[x.vecin] = distTo[i] + x.cost;

    for(int i = 1; i <= N; i++)
            for(auto x: graf[i])
                if(distTo[i] + x.cost < distTo[x.vecin]){
                    cout << "Ciclu negativ!";
                    return 0;
                }

    for(int i = 2; i <= N; i++)
        fout << distTo[i] << ' ';


    return 0;
}