@@ -60,8 +60,10 @@ def bellman_ford(self, start: str) -> dict:
6060
6161 for vertex_a in self .graph :
6262 for vertex_a , vertex_b , weight in self .edges :
63- if (distances [vertex_a ] != sys .maxsize - 1 and
64- distances [vertex_a ] + weight < distances [vertex_b ]):
63+ if (
64+ distances [vertex_a ] != sys .maxsize - 1
65+ and distances [vertex_a ] + weight < distances [vertex_b ]
66+ ):
6567 distances [vertex_b ] = distances [vertex_a ] + weight
6668
6769 return distances
@@ -83,18 +85,34 @@ def johnson_algo(self) -> list[dict]:
8385
8486 for i in range (len (self .edges )):
8587 vertex_a , vertex_b , weight = self .edges [i ]
88+ self .edges [i ] = (
89+ vertex_a ,
90+ vertex_b ,
91+ weight + hash_path [vertex_a ] - hash_path [vertex_b ],
92+ )
8693 self .edges [i ] = (vertex_a ,
8794 vertex_b ,
8895 weight + hash_path [vertex_a ] - hash_path [vertex_b ])
8996
9097 self .graph .pop ("#" )
98+ self .edges = [
99+ (vertex1 , vertex2 , node_weight )
100+ for vertex1 , vertex2 , node_weight in self .edges
101+ if vertex1 != "#"
102+ ]
91103 filtered_edges = []
92104 for vertex1 , vertex2 , node_weight in self .edges :
93105 if vertex1 != "#" :
94106 filtered_edges .append ((vertex1 , vertex2 , node_weight ))
95107 self .edges = filtered_edges
96108
97109 for vertex in self .graph :
110+ self .graph [vertex ] = [
111+ (vertex2 , node_weight )
112+ for vertex1 , vertex2 , node_weight in self .edges
113+ if vertex1 == vertex
114+ ]
115+
98116 filtered_neighbors = []
99117 for vertex1 , vertex2 , node_weight in self .edges :
100118 if vertex1 == vertex :
0 commit comments