Cod sursa(job #2717119)

Utilizator ioana.jianuIoana Jianu ioana.jianu Data 6 martie 2021 13:59:58
Problema Algoritmul Bellman-Ford Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>

using namespace std;

const int MMAX = 250001;
const int NMAX = 50001;
long long dist[NMAX];

const long long INF = (long long)1e17;

struct ura {int a, b, cost;};

ura muchii[MMAX];

int main() {

    freopen ("bellmanford.in", "r", stdin);
    freopen ("bellmanford.out", "w", stdout);

    int n, m, i, j, pp;

    scanf ("%d%d", &n, &m);

    for (i = 1; i <= m; i++) {
        scanf ("%d%d%d", &muchii[i].a, &muchii[i].b, &muchii[i].cost);
    }

    for (i = 2; i <= n; i++) {
        dist[i] = INF;
    }
    dist[1] = 0;

    for (i = 1; i < n; i++) {
        for (j = 1; j <= m; j++) {
            if (dist[muchii[i].a] != INF && dist[muchii[i].a] + muchii[i].cost < dist[muchii[i].b])
                dist[muchii[i].b] = dist[muchii[i].a] + muchii[i].cost;
        }
    }

    pp = 0;
    for (j = 1; j <= m; j++) {
        if (dist[muchii[i].a] != INF && dist[muchii[i].a] + muchii[i].cost < dist[muchii[i].b])
            pp = -1;
    }

    if (pp == -1)
        printf ("Ciclu negativ!");
    else
        for (i = 2; i <= n; i++)
            printf ("%lld ", dist[i]);

    return 0;
}