Cod sursa(job #2787070)

Utilizator csamoilasamoila ciprian casian csamoila Data 22 octombrie 2021 13:35:43
Problema Algoritmul Bellman-Ford Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <tuple>
#define INF 50000001

using namespace std;

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

int n,m;
vector<tuple<int,int,int>>V;
int cost[50001];

int main() {
    fin >> n >> m;
    for(int i=1;i<=m;i++) {
        int a,b,w;
        fin >> a >> b >> w;
        V.push_back({a,b,w});
    }

    for(int i=1;i<=n;i++) cost[i]=INF;
    cost[1]=0;

    for(int j=1;j<=n;j++) {
        int ok=1;
        for(int i=0;i<m;i++) {
            int a,b,w;
            tie(a,b,w) = V[i];
            if(cost[b]>cost[a]+w) {
                cost[b] = cost[a] + w;
                ok=0;
            }
        }
        if(ok==1) {
            for(int i=2;i<=n;i++) fout << cost[i] << ' ';
            return 0;
        }
    }

    fout << "Ciclu negativ!";
    
    return 0;
}