Cod sursa(job #3287250)

Utilizator p_PEPAUL ENACHE p_PE Data 17 martie 2025 11:02:44
Problema Algoritmul Bellman-Ford Scor 35
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fcin("bellmanford.in");
ofstream fcout("bellmanford.out");
const int inf=26000000000;

int a[23001][23001],d[101],n,m;

int bellman_ford()
{
    int i,j,k;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            for(k=1; k<=n; k++)
                if(d[k]>d[j]+a[j][k])
                    d[k]=d[j]+a[j][k];
    for(j=1; j<=n; j++)
        for(k=1; k<=n; k++)
            if(d[k]>d[j]+a[j][k])
                return 0;
    return 1;
}
int main()
{
    int i,j,x,y,z;
    fcin>>n>>m;
    for(i=1; i<=n; i++)
    {
        d[i]=inf;
        for(j=1; j<=n; j++)
        {
            a[i][j]=inf;
            a[i][i]=0;
        }
    }
    d[1]=0;
    for(i=1; i<=m; i++)
    {
        fcin>>x>>y>>z;
        a[x][y]=z;
    }
    if(bellman_ford())

        for(i=2; i<=n; i++)
        {
            if(d[i]==inf)
                fcout<<"-1 ";
            else fcout<<d[i]<<' ';
        }
    else fcout<<"Ciclu negativ!";
    return 0;
}