Pagini recente » Cod sursa (job #2386936) | Cod sursa (job #2535252) | Cod sursa (job #2686094) | Cod sursa (job #953425) | Cod sursa (job #1899317)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("bellmanford.in");
ofstream out("bellmanford.out");
const int INF = 2e9;
const int NM = 50010;
int N, E, i, j;
int dist[NM];
struct Edge {
int u, v, w;
};
vector <Edge> G;
int main()
{
in >> N >> E;
for (i = 1; i <= E; ++i) {
Edge e;
in >> e.u >> e.v >> e.w;
G.push_back(e);
}
fill(dist+2, dist+N+1, INF);
for (i = 1; i <= N - 1; ++i) {
for (j = 0; j < G.size(); ++j) {
if (dist[G[j].u] + G[j].w < dist[G[j].v])
dist[G[j].v] = dist[G[j].u] + G[j].w;
}
}
for (i = 0; i < G.size(); ++i) {
if (dist[G[i].u] + G[i].w < dist[G[i].v]) {
out << "Ciclu negativ!";
return 0;
}
}
for (j = 2; j <= N; ++j) {
out << dist[j] << ' ';
}
return 0;
}