Cod sursa(job #1111302)

Utilizator muresan_bogdanMuresan Bogdan muresan_bogdan Data 18 februarie 2014 19:39:18
Problema Algoritmul Bellman-Ford Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<iostream>
#include<fstream>
using namespace std;

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

struct muchie {
    int x, y, c;
};

const int INF = 1000000000;
int n, i, j, a, b, c, m, vertex[50002];
muchie edge[250002];

int main() {
    fin >> n >> m;
    for(i = 1; i <= m; i++) {
        fin >> a >> b >> c;
        edge[i] = {a, b, c};
    }
    vertex[1] = 0;
    for(i = 2; i <= n; i++) {
        vertex[i] = INF;
    }
    for(i = 1; i <= n; i++) {
        for(j = 1; j <= m; j++) {
            a = edge[j].x;
            b = edge[j].y;
            c = edge[j].c;
            if (vertex[b] > vertex[a] + c) {
                vertex[b] = vertex[a] + c;
            }
        }
    }
    for(i = 1; i <= m; i++) {
        a = edge[i].x;
        b = edge[i].y;
        c = edge[i].c;
        if (vertex[b] > vertex[a] + c) {
            fout << "Ciclu negativ!";
            return 0;
        }
    }
    for(i = 2; i <= n; i++) {
        fout << vertex[i] << ' ';
    }
    fin.close();
    fout.close();
    return 0;
}