Cod sursa(job #2723452)

Utilizator BogdanRazvanBogdan Razvan BogdanRazvan Data 14 martie 2021 07:02:08
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>
#define mod 666013

using namespace std;

void usain_bolt()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
}

const int N = 5e4 + 5;

vector < pair < int, int > > a[N];

int f[N], n, m;
bool in[N];

void bfs(int k)
{
   queue < int > q;
   vector < int > d(N - 1, 2e9);
   d[1] = 0;
   q.push(k);
   in[1] = true;
   while(!q.empty()) {
       int v = q.front();
       q.pop();
       ++f[v];
       if(f[v] == n) {
        cout << "Ciclu negativ!";
        exit(0);
       }
       in[v] = false;
       for(auto x : a[v]) {
            int to = x.first;
            int len = x.second;
            if(d[to] > d[v] + len) {
                d[to] = d[v] + len;
                if(in[to] == false) {
                    q.push(to);
                    in[to] = true;
                }
            }
       }
   }
   for(int i = 2; i <= n; ++i) {
        cout << d[i] << " ";
   }
}

int main()
{
    usain_bolt();

    cin >> n >> m;
    for(int i = 1; i <= m; ++i) {
        int x, y, w;

        cin >> x >> y >> w;
        a[x].push_back({y, w});
    }
    bfs(1);
    return 0;
}