Dikjatra
import heapq
def dijkstra(graph, start, n):
distance = [float('inf')] * n
distance[start] = 0
pq = [(0, start)]
while pq:
dist_u, u = heapq.heappop(pq)
for v, weight in graph[u]:
if distance[v] > dist_u + weight:
distance[v] = dist_u + weight
heapq.heappush(pq, (distance[v], v))
return distance
n = int(input("Enter number of vertices: "))
e = int(input("Enter number of edges: "))
graph = {i: [] for i in range(n)}
print("Enter each edge in format: u v weight")
for _ in range(e):
u, v, w = map(int, input().split())
graph[u].append((v, w))
start_node = int(input("Enter the starting node: "))
result = dijkstra(graph, start_node, n)
print(f"Shortest distances from node {start_node}: {result}")