Advertisement
sajid006

a star 2

Mar 9th, 2020
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. import operator
  2. from queue import PriorityQueue
  3. inf=9999999999
  4. graph = {'Oradea':{'Zerind':71,'Sibiu':151},'Zerind':{'Oradea':71,'Arad':75},'Arad':{'Zerind':75,'Timisoara':118,'Sibiu':140},'Timisoara':{'Arad':118,'Lugoj':111},'Lugoj':{'Timisoara':111,'Mehadia':70},'Mehadia':{'Lugoj':70,'Dobreta':70},'Dobreta':{'Mehadia':75,'Craiova':120},'Craiova':{'Dobreta':120,'Rimnicu Vilcea':146,'Pitesti':138},'Sibiu':{'Arad':140,'Oradea':151,'Rimnicu Vilcea':80,'Fagaras':99},'Rimnicu Vilcea':{'Sibiu':80,'Craiova':146,'Pitesti':97},'Fagaras':{'Sibiu':99,'Bucharest':221},'Pitesti':{'Bucharest':101,'Rimnicu Vilcea':97,'Craiova':138},'Bucharest':{'Fagaras':211,'Pitesti':101,'Giurgiu':90,'Urziceni':85},'Giurgiu':{'Bucharest':90},'Urziceni':{'Bucharest':85,'Hirsova':98,'Vaslui':142},'Hirsova':{'Urziceni':98,'Eforie':86},'Eforie':{'Hirsova':86},'Vaslui':{'Urziceni':142,'Iasi':92},'Iasi':{'Neamt':87,'Vaslui':92},'Neamt':{'Iasi':87}}
  5. hsld = {'Arad':366, 'Bucharest':0, 'Craiova':160, 'Dobreta':242, 'Eforie':161, 'Fagaras':176, 'Giurgiu':77, 'Hirsova':151, 'Iasi':226, 'Lugoj':244, 'Mehadia':241, 'Neamt':234, 'Oradea':380, 'Pitesti':100, 'Rimnicu Vilcea':193, 'Sibiu':253, 'Timisoara':329, 'Urziceni':80, 'Vaslui':199, 'Zerind':374}
  6. #d = {'Arad':inf, 'Bucharest':inf, 'Craiova':inf, 'Dobreta':inf, 'Eforie':inf, 'Fagaras':inf, 'Giurgiu':inf, 'Hirsova':inf, 'Iasi':inf, 'Lugoj':inf, 'Mehadia':inf, 'Neamt':inf, 'Oradea':inf, 'Pitesti':inf, 'Rimnicu Vilcea':inf, 'Sibiu':inf, 'Timisoara':inf, 'Urziceni':inf, 'Vaslui':inf, 'Zerind':inf}
  7. par={}
  8. d={}
  9. for i in graph.keys():
  10. par[i]=i
  11. d[i]=inf
  12. #print(par)
  13. #print(type(d['Arad']))
  14. start = 'Arad'
  15. destination = 'Bucharest'
  16. pq=PriorityQueue();
  17. pq.put((-hsld[start],start))
  18. path=[]
  19. d[start]=0
  20. cost=0
  21. while not pq.empty():
  22. k=pq.get()
  23. val=k[0]
  24. node=k[1]
  25. for curnode in graph[node].keys():
  26. if curnode==par[node]:
  27. continue
  28. curval=graph[node][curnode]
  29. if (curval+d[node])<d[curnode]:
  30. d[curnode]=curval+d[node]
  31. par[curnode]=node
  32. pq.put((-hsld[curnode]-d[curnode],curnode))
  33.  
  34.  
  35. node=destination
  36. while node!=start:
  37. path.append(node)
  38. node=par[node]
  39. path.append(start)
  40. path.reverse()
  41. print(path)
  42. print(d[destination])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement