Cod sursa(job #3173276)

Utilizator Barbu_MateiBarbu Matei Barbu_Matei Data 22 noiembrie 2023 12:51:50
Problema Algoritmul Bellman-Ford Scor 35
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;

struct vertex {
  int from, to, cost;
} e[250001];

int n, m, dist[50001];

int main() {
    ifstream cin("bellmanford.in");
    ofstream cout("bellmanford.out");
    cin >> n >> m;
    for (int i = 2; i <= n; ++i) {
        dist[i] = 1e9;
    }
    dist[1] = 0;
    for (int i = 1; i <= m; ++i) {
        cin >> e[i].from >> e[i].to >> e[i].cost;
    }
    for (int i = 1; i <= n - 1; ++i) {
        for (int j = 1; j <= m; ++j) {
            if (dist[e[j].from] + e[j].cost < dist[e[j].to]) {
                dist[e[j].to] = dist[e[j].from] + e[j].cost;
            }
        }
    }
    for (int j = 1; j <= m; ++j) {
        if (dist[e[j].from] + e[j].cost < dist[e[j].to]) {
            cout << "Ciclu negativ!";
            return 0;
        }
    }
    for (int i = 2; i <= n; ++i) {
        cout << dist[i] << " ";
    }
}