Cod sursa(job #3326826)

Utilizator radu._.21Radu Pelea radu._.21 Data 30 noiembrie 2025 18:22:45
Problema Algoritmul Bellman-Ford Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
#define ll unsigned long long

using namespace std;
int n,m;
vector<pair<int,int>>G[100001];
int d[100001],incoada[100001],viz[100001];
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int main(){
    fin>>n>>m;
    while(m--){
        int x,y,cost;
        fin>>x>>y>>cost;
        G[x].push_back({y,cost});
    }
    for(int i = 2;i<=n;i++){
        d[i]= 1000000000;
    }
    queue<int>Q;
    Q.push(1);
    incoada[1]=1;
    while(!Q.empty()){
        int nod = Q.front();
        Q.pop();
        incoada[nod]=0;
        viz[nod]++;
        if(viz[nod]>1){
            fout<<"Ciclu negativ!";
            return 0;
        }

        for(auto x : G[nod]){
            int vecin = x.first;
            int cost = x.second;
            if(d[vecin]>d[nod]+cost){
                d[vecin] = d[nod]+cost;
                if(incoada[vecin] == 0){
                    Q.push(vecin);
                    incoada[vecin] = 1;
            }
            }
        }
    }
    for(int i = 2; i<=n; i++)
        fout<<d[i]<<" ";
    return 0;
}