OneCompiler

Dikjatra

106

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}")