Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def dijkstra():
- global graph
- global edge
- s = int(input("Vertex1:"))
- end=int(input("Vertex2:"))
- prev = {}
- q = PriorityQueue()
- q.add(s, 0)
- d = {}
- d[s] = 0
- visited = set()
- visited.add(s)
- while not q.isEmpty():
- x = q.pop()
- for y in graph.outV(x):
- if edge.getProperty(x, y,False) is not -1:
- if y not in visited or d[y] > d[x] + edge.getProperty(x, y,False):
- d[y] = d[x] + edge.getProperty(x, y,False)
- visited.add(y)
- q.add(y, d[y])
- prev[y] = x
- if (graph.min_distance(s, end)!=-1):
- sum=0
- path=[]
- while(end != s):
- sum+=edge.getProperty(prev[end],end,False)
- path.append(end)
- end=prev[end]
- path.append(s)
- path=path[::-1]
- print("Path:",path,"\nMinimum cost:",sum)
- else:
- print("There is no path between those vertices")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement