Cod sursa(job #2767474)

Utilizator vlad2009Vlad Tutunaru vlad2009 Data 6 august 2021 12:34:52
Problema Algoritmul Bellman-Ford Scor 35
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <vector>

using namespace std;

struct Tuple
{
    int first, second, third;
};

const int Nmax = 50000;
const int INF = (1 << 30);
int dist[Nmax + 1];
bool viz[Nmax + 1];
vector <Tuple> edges;

int main()
{
    ifstream fin("bellmanford.in");
    ofstream fout("bellmanford.out");
    int n, m;
    fin >> n >> m;
    for (int i = 1; i <= m; i++)
    {
        int u, v, w;
        fin >> u >> v >> w;
        edges.push_back({u, v, w});
    }
    for (int i = 1; i <= Nmax; i++)
    {
        dist[i] = INF;
    }
    dist[1] = 0;
    for (int i = 1; i <= n; i++)
    {
        for (auto e : edges)
        {
            int a = e.first, b = e.second, c = e.third;
            if (dist[a] + c < dist[b])
            {
                if (i == n)
                {
                    fout << "Ciclu negativ!";
                    return 0;
                }
                dist[b] = dist[a] + c;
            }
        }
    }
    for (int i = 2; i <= n; i++)
    {
        fout << dist[i] << " ";
    }
    return 0;
}