Cod sursa(job #1211375)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 22 iulie 2014 15:03:11
Problema Algoritmul Bellman-Ford Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

ifstream ka("bellmanford.in");
ofstream ki("bellmanford.out");

const int N_MAX = 50000;
const int M_MAX = 250000;

int n, m, x, y, c, distanta[N_MAX + 1];

struct muchie
{
    int vecin;
    int cost;

    muchie(int vecin, int cost) {
        this->vecin = vecin;
        this->cost = cost;
    }
};

vector<muchie> vecini[N_MAX + 1];
queue <int> coada;

int main()
{
    ka >> n >> m;
    for(int i = 1; i <= m; i++)
    {
        //muchie muchie;
        int x, y, c;
        ka >> x >> y >> c;
        vecini[x].push_back(muchie(y, c));
    }
    distanta[1] = 0;
    for(int i = 2; i <= n; i++)
        distanta[i] = 0x3fffffff;
    coada.push(1);
    while(!coada.empty())
    {
        int nod = coada.front();
	 coada.pop();
        for(int i = 0; i < vecini[nod].size(); i++)
            if(distanta[nod] + vecini[nod][i].cost < distanta[vecini[nod][i].vecin])
		{
            distanta[vecini[nod][i].vecin] = distanta[nod] + vecini[nod][i].cost;
                coada.push(vecini[nod][i].vecin);
}
    }


//    if(schimbat)
//        ki << "Ciclu negativ!\n";
//    else
        for(int i = 2; i <= n; i++)
            ki << distanta[i] << " ";
    return 0;
}