Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import heapq
- graph = [[(1,7),(2,4)], [(0,7),(3,2)], [(0,4),(4,3),(3,3)], [(1,2),(2,3),(5,1)], [(2,3),(5,2)],[(4,2),(3,1)]]
- def modifiedDijkstra(graph,startVertex):
- visited = [False for x in range(len(graph))]
- distance = [float("inf") for x in range(len(graph))]
- parent = [-1 for x in range(len(graph))]
- pq = []
- # i push (0,0) that x is minus distance and y is vertex index
- heapq.heappush(pq,(-distance[startVertex],0))
- while(1):
- try:
- vertex = heapq.heappop(pq)
- except:
- break
- if not visited[vertex[1]]:
- distance[vertex[1]] = -vertex[0]
- visited[vertex[1]] = True
- for x in graph [vertex[1]] :
- if not visited[x[0]]:
- heapq.heappush(pq, (-min(distance[vertex[1]],x[1]), x[0]))
- return distance
- dist = modifiedDijkstra(graph,0)
- print(dist)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement