def pure_dijkstra(nodes, adj, start, end): dist = [float('inf')] * nodes dist[start] = 0 visited = [False] * nodes cur = start while True: if cur == -1: break if cur == end: break for next, d in adj[cur]: if not visited[next]: new = dist[cur] + d if new < dist[next]: dist[next] = new visited[cur] = True # Finding min node min_node = -1 min_val = float('inf') for n in range(nodes): if not visited[n] and dist[n] < min_val: min_node = n min_val = dist[n] cur = min_node return dist[end]