Pagini recente » Cod sursa (job #2312245) | Autentificare | Cod sursa (job #2654125) | Cod sursa (job #525804) | Cod sursa (job #3235642)
#include <fstream>
using namespace std;
const int N = 5e4;
const int M = 25e4;
const int INF = 6e7;
struct arc
{
int x, y, c;
};
int d[N+1], n, m;
arc e[M];
bool exista_circuit_negativ()
{
for (int j = 0; j < m; j++)
{
if (d[e[j].x] + e[j].c < d[e[j].y])
{
return true;
}
}
return false;
}
int main()
{
ifstream in("bellmanford.in");
ofstream out("bellmanford.out");
in >> n >> m;
for (int i = 0; i < m; i++)
{
in >> e[i].x >> e[i].y >> e[i].c;
}
d[1] = 0;
for (int i = 2; i <= n; i++)
{
d[i] = INF;
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < m; j++)
{
if (d[e[j].x] + e[j].c < d[e[j].y])
{
d[e[j].y] = d[e[j].x] + e[j].c;
}
}
}
if (exista_circuit_negativ())
{
out << "Ciclu negativ!\n";
}
else
{
for (int i = 2; i <= n; i++)
{
out << d[i] << " ";
}
}
in.close();
out.close();
return 0;
}