Cod sursa(job #1603019)

Utilizator BogdanOuatuOuatu Bogdan-Ioan BogdanOuatu Data 17 februarie 2016 09:32:03
Problema Algoritmul Bellman-Ford Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#define INF 9999999
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
int a[250004][3],n,m,d[50003],v[50003];
int main()
{
    int i,ok=1;
    fin>>n>>m;
    for(i=1;i<=n;i++)d[i]=INF;
    d[1]=0;
    for(i=0;i<m;i++)
        fin>>a[i][0]>>a[i][1]>>a[i][2];
    while(ok)
    {
        ok=0;
        for(i=0;i<m;i++)
            {if(d[a[i][1]]>d[a[i][0]]+a[i][2])
                {
                v[a[i][1]]++;
                if(v[a[i][1]]>n){fout<<"Ciclu negativ!";fout.close();return 0;}
                d[a[i][1]]=d[a[i][0]]+a[i][2];
                ok=1;
                }

            }
    }
    for(i=2;i<=n;i++)
        fout<<d[i]<<' ';
    fin.close();
    fout.close();
    return 0;
}