Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from heapq import heappush, heappop
- class Dijkstra:
- def __init__(self, adjacents):
- self.adj = adjacents
- self.n = len(adjacents)
- def dijkstra(self, start):
- dis, vis, graf = {}, {}, []
- for node in self.adj.keys():
- dis[node] = 0
- vis[node] = False
- dis[start], vis[start] = 0, True
- heappush(graf, (0, start))
- p=0
- while graf:
- (d, node) = heappop(graf)
- vis[node] = True
- for n, tez in self.adj[node].items():
- if (not vis[n]) or (tez > dis[n] and d > dis[n]):
- if(tez >= d and d!=0):
- p=d
- else:
- p=tez
- dis[n]=p
- heappush(graf, (dis[n], n))
- return dis
- G = {'0':{'1':50, '4':20},
- '1':{'0':50, '2':30, '3':40},
- '2':{'1':30, '3':60},
- '3':{'4':10, '3':40, '2':60},
- '4':{'0':20, '3':10}}
- d = Dijkstra(G)
- n = d.dijkstra('0')
- k=0
- for i in n:
- if(k!=0):
- print(n[i], end=" ")
- else:
- k=k+1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement