Cod sursa(job #3285614)

Utilizator myrra678ana ana myrra678 Data 13 martie 2025 11:29:26
Problema Algoritmul Bellman-Ford Scor 15
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream cin("bellmanford.in");
ofstream cout("bellmanford.out");

const int INF=250000001;

struct muchie
{
    int x,y,c;
};

vector <muchie> lista;
int dist[50001];
int n,m;

void bellford()
{
    int ok=0;
    for(int i=1;i<=n-1;i++)
    {
        for(auto k:lista)
        {
            if(dist[k.x]+k.c<dist[k.y])
                dist[k.y]=dist[k.x]+k.c;
        }
    }
    
    for(auto k:lista)
        {
            if(dist[k.x]+k.c<dist[k.y])
                {
                    cout<<"Ciclu negativ!";
                    ok=1;
                }
        }
    if(ok==0)
        for(int i=2;i<=n;i++)
            cout<<dist[i]<<" ";
}

int main()
{
    int x,y,c;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y>>c;
        lista.push_back({x,y,c});
    }
    
    for(int i=2;i<=n;i++)
        dist[i]=INF;
        
    bellford();
    
    return 0;
}