Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct edge {};
- // Detects negative cycles in a weighted graph
- bool Bellman_Ford(int src, std::vector<std::vector<edge>>& edges)
- {
- std::vector<int> distance(edges.size(), 0x3f3f3f3f);
- distance[src] = 0;
- for (int i = 0; i < edges.size(); i++)
- for (int from = 0; from < size(); from++)
- if (distance[from] != 0x3f3f3f3f)
- for (edge& e : edges[from])
- distance[e.to] = std::min(distance[e.to], e.weight + distance[from]);
- for (int from = 0; from < edges.size(); from++)
- if (distance[from] != 0x3f3f3f3f)
- for (edge& e : edges[from])
- if (distance[from] + e.weight < distance[e.to])
- return true;
- return false;
- }
Add Comment
Please, Sign In to add comment