Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. import heapq
  2.  
  3. 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)]]
  4.  
  5. def modifiedDijkstra(graph,startVertex):
  6. visited = [False for x in range(len(graph))]
  7. distance = [float("inf") for x in range(len(graph))]
  8. parent = [-1 for x in range(len(graph))]
  9.  
  10. pq = []
  11. # i push (0,0) that x is minus distance and y is vertex index
  12. heapq.heappush(pq,(-distance[startVertex],0))
  13.  
  14. while(1):
  15. try:
  16. vertex = heapq.heappop(pq)
  17. except:
  18. break
  19. if not visited[vertex[1]]:
  20. distance[vertex[1]] = -vertex[0]
  21. visited[vertex[1]] = True
  22. for x in graph [vertex[1]] :
  23. if not visited[x[0]]:
  24. heapq.heappush(pq, (-min(distance[vertex[1]],x[1]), x[0]))
  25. return distance
  26.  
  27. dist = modifiedDijkstra(graph,0)
  28.  
  29. print(dist)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement