Advertisement
Guest User

kek

a guest
May 20th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.13 KB | None | 0 0
  1. import sys
  2. from heapq import heappush, heappop
  3.  
  4. class Dijkstra:
  5.     def __init__(self, adjacents):
  6.         self.adj = adjacents
  7.         self.n = len(adjacents)
  8.  
  9.     def dijkstra(self, start):
  10.         dis, vis, graf = {}, {}, []
  11.  
  12.         for node in self.adj.keys():
  13.             dis[node] = 0
  14.             vis[node] = False
  15.  
  16.         dis[start], vis[start] = 0, True
  17.         heappush(graf, (0, start))
  18.         p=0
  19.         while graf:
  20.             (d, node) = heappop(graf)
  21.             vis[node] = True
  22.             for n, tez in self.adj[node].items():
  23.                 if (not vis[n]) or (tez > dis[n] and d > dis[n]):
  24.                     if(tez >= d and d!=0):
  25.                         p=d
  26.                     else:
  27.                         p=tez
  28.                     dis[n]=p
  29.                     heappush(graf, (dis[n], n))
  30.  
  31.         return dis
  32.  
  33.  
  34. G = {'0':{'1':50, '4':20},
  35.      '1':{'0':50, '2':30, '3':40},
  36.      '2':{'1':30, '3':60},
  37.      '3':{'4':10, '3':40, '2':60},
  38.      '4':{'0':20, '3':10}}
  39.  
  40. d = Dijkstra(G)
  41. n = d.dijkstra('0')
  42. k=0
  43. for i in n:
  44.     if(k!=0):
  45.         print(n[i], end=" ")
  46.     else:
  47.         k=k+1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement