Cod sursa(job #3293922)

Utilizator badeaalesiaAlesia Badea badeaalesia Data 13 aprilie 2025 15:33:59
Problema Algoritmul Bellman-Ford Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");

vector<pair<int,int>>graf[50005];
int q[50005];
int dist[50005], noduri[50005];

int main()
{
    int n,m,x,y,c;
    int i;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y>>c;
        graf[x].push_back({y,c});
    }
    for(i=2;i<=n;i++)
        dist[i]=1e9;
    noduri[1]=1;
    dist[1]=0;
    int p=1,u=1;
    while(p<=u)
    {
        int nodCrt=1;
        //verif ciclu negativ
        if(noduri[nodCrt]>n){
            fout<<"Ciclu negativ!";
            return 0;}
        for(i=2;i<=n;i++)
            if(q[i]==nodCrt)
                continue;
        else {u++;
            for(auto a:graf[nodCrt])
                if(dist[a.first]>dist[nodCrt]+a.second)
            {
                noduri[a.first]=noduri[nodCrt]+1;
                dist[a.first]=dist[nodCrt]+a.second;
                p++;
            }
        }
    }
    for(i=2;i<=n;i++)
        fout<<dist[i]<<" ";

    return 0;
}