Pagini recente » Cod sursa (job #273402) | Cod sursa (job #932433) | Cod sursa (job #329859) | Cod sursa (job #1117114) | Cod sursa (job #1699948)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("bellmanford.in");
ofstream g("bellmanford.out");
const int mod = 666013, mare = 500000000;
int coada[mod], st, dr;
int x, y, c, n, m, i;
int ds[mod];
vector <int> ls[50005];
vector <int> lc[50005];
int main()
{
f >> n >> m;
for (i = 1; i <= m; i++)
{
f >> x >> y >> c;
ls[x].push_back(y);
lc[x].push_back(c);
}
for (i = 1; i <= n; i++)
ds[i] = mare;
coada[0] = 1, ds[1] = 0;
while (st <= dr)
{
x = coada[st%mod], st++;
for (i = 0; i < ls[x].size(); i++)
{
if (ds[x] + lc[x][i] < ds[ ls[x][i] ])
{
ds[ ls[x][i] ] = ds[x] + lc[x][i];
dr++, coada[dr%mod] = ls[x][i];
}
else if (ds[ ls[x][i] ] > 0 && ds[x] < 0)
{
g << "Ciclu negativ!";
return 0;
}
}
}
for (i = 2; i <= n; i++)
g << ds[i] << " ";
return 0;
}