File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 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+
You can’t perform that action at this time.
0 commit comments