dijkstras shortest path
class Graph:
def init(self, vertices):
self.v = vertices
self.graph = [[0 for col in range(vertices)] for row in range(vertices)]
def minDistance(self, dist, visited):
min_val = 1e7
min_index = 0
for i in range(self.v):
if dist[i] < min_val and not visited[i]:
min_val = dist[i]
min_index = i
return min_index
def printSolution(self, dist):
print("Vertex \t Distance from source")
for node in range(self.v):
print(node, "\t\t", dist[node])
def dijkstra(self, src):
dist = [1e7] * self.v
dist[src] = 0
visited = [False] * self.v
for _ in range(self.v):
u = self.minDistance(dist, visited)
visited[u] = True
for v in range(self.v):
if self.graph[u][v] > 0 and not visited[v] and dist[v] > dist[u] + self.graph[u][v]:
dist[v] = dist[u] + self.graph[u][v]
self.printSolution(dist)
vertices = int(input("Enter the number of vertices: "))
g = Graph(vertices)
g.graph = [
[0, 1, 0, 2, 0],
[1, 0, 2, 0, 0],
[0, 2, 0, 2, 8],
[2, 0, 2, 0, 3],
[0, 0, 8, 3, 0]
]
value = int(input("Enter the starting point: "))
g.dijkstra(value)