Skip to content

Commit 2fdd42f

Browse files
authored
Merge pull request geekquad#39 from ashneg/master
Added bellman-ford-algorithm
2 parents 645187f + d0d1176 commit 2fdd42f

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Python3 program for Bellman-Ford's single source
2+
3+
class Graph:
4+
5+
def __init__(self, vertices):
6+
self.V = vertices
7+
self.graph = []
8+
9+
def addEdge(self, u, v, w):
10+
self.graph.append([u, v, w])
11+
def printArr(self, dist):
12+
print("Vertex Distance from Source")
13+
for i in range(self.V):
14+
print("{0}\t\t{1}".format(i, dist[i]))
15+
def BellmanFord(self, src):
16+
dist = [float("Inf")] * self.V
17+
dist[src] = 0
18+
19+
for _ in range(self.V - 1):
20+
for u, v, w in self.graph:
21+
if dist[u] != float("Inf") and dist[u] + w < dist[v]:
22+
dist[v] = dist[u] + w
23+
24+
for u, v, w in self.graph:
25+
if dist[u] != float("Inf") and dist[u] + w < dist[v]:
26+
print("Graph contains negative weight cycle")
27+
return
28+
self.printArr(dist)
29+
30+
g = Graph(5)
31+
g.addEdge(0, 1, -1)
32+
g.addEdge(0, 2, 4)
33+
g.addEdge(1, 2, 3)
34+
g.addEdge(1, 3, 2)
35+
g.addEdge(1, 4, 2)
36+
g.addEdge(3, 2, 5)
37+
g.addEdge(3, 1, 1)
38+
g.addEdge(4, 3, -3)
39+
40+
# Print the solution
41+
g.BellmanFord(0)
42+

0 commit comments

Comments
 (0)