summaryrefslogtreecommitdiff
path: root/graph/bellmannFord.cpp
diff options
context:
space:
mode:
authorPaul Jungeblut <s_jungeb@i08pc38.atis-stud.uni-karlsruhe.de>2014-11-14 15:29:22 +0100
committerPaul Jungeblut <s_jungeb@i08pc38.atis-stud.uni-karlsruhe.de>2014-11-14 15:29:22 +0100
commit8ceb0e35278563a3b315f04fc60fc9086d6c7a8a (patch)
treea7b0e1928632be9a139aefa20e426490dfd12c90 /graph/bellmannFord.cpp
parent1d2d2541dd913892a983da13f84c33f1a5d43ff6 (diff)
bellmann ford, gcd, lcm, ectended euclid
Diffstat (limited to 'graph/bellmannFord.cpp')
-rw-r--r--graph/bellmannFord.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/graph/bellmannFord.cpp b/graph/bellmannFord.cpp
new file mode 100644
index 0000000..94fa034
--- /dev/null
+++ b/graph/bellmannFord.cpp
@@ -0,0 +1,18 @@
+//n = number of vertices, edges is vector of edges
+dist.assign(n, INF); dist[0] = 0;
+parent.assign(n, -1);
+for (i = 0; i < n - 1; i++) {
+ for (j = 0; j < (int)edges.size(); j++) {
+ if (dist[edges[j].from] + edges[j].cost < dist[edges[j].to]) {
+ dist[edges[j].to] = dist[edges[j].from] + edges[j].cost;
+ parent[edges[j].to] = edges[j].from;
+ }
+ }
+}
+//now dist and parent are correct shortest paths
+//next lines check for negative cycles
+for (j = 0; j < (int)edges.size(); j++) {
+ if (dist[edges[j].from] + edges[j].cost < dist[edges[j].to]) {
+ //NEGATIVE CYCLE found
+ }
+}