class Graph: def __init__(self, vertices): self.V = vertices self.graph = [] # function to add an edge to graph def addEdge(self, u, v, w): self.graph.append([u, v, w]) def shortestPath(self): dist = [] for i in range(self.V): new_array = [] for j in range(self.V): new_array.append(float("inf")) dist.append(new_array) for i in range(self.V): for j in range(self.V): if i == j: dist[i][j] = 0 for s, e, w in self.graph: dist[s][e] = w for i in range(self.V): for j in range(self.V): for k in range(self.V): dist[j][k] = min(dist[j][k], dist[j][i] + dist[i][k]) return dist g = Graph(4) g.addEdge(0, 2, -2) g.addEdge(1, 0, 4) g.addEdge(1, 2, 3) g.addEdge(2, 3, 2) g.addEdge(3, 1, -1) # Print the solution print(g.shortestPath())