Pagini recente » Cod sursa (job #1194958) | Cod sursa (job #3244445) | Cod sursa (job #1455063) | Cod sursa (job #2389075) | Cod sursa (job #1211375)
#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;
}