Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. visited = set()
  2.  
  3.  
  4. def dijkstra(N, s, c, nodes):
  5. weightCup = 100 * c
  6. time = [100000] * (N + 1)
  7. time[s] = 0
  8. for i in range(1, N + 1):
  9. minTime = 10000000
  10. nodeMin = -1
  11. for j in range(1, N + 1):
  12. if j not in visited and time[j] < minTime:
  13. nodeMin = j
  14. minTime = time[j]
  15. for el in nodes[nodeMin]:
  16. if el[2] >= weightCup and time[nodeMin] + el[1] < time[el[0]]:
  17. time[el[0]] = time[nodeMin] + el[1]
  18. visited.add(nodeMin)
  19. if time[N] > 1440:
  20. return True
  21. else:
  22. return False
  23.  
  24.  
  25. def binarySearch():
  26. l = 0
  27. r = 10000001
  28. while l != r:
  29. mid = (l + r) // 2
  30. res = dijkstra(n, s, mid, nodes)
  31. if res == 1:
  32. l = mid + 1
  33. else:
  34. r = mid
  35. print(l)
  36.  
  37.  
  38. nodes = list()
  39. n, m = map(int, input().split())
  40. for i in range(n + 1):
  41. nodes.append([])
  42. if n == 1:
  43. print(10000000)
  44. else:
  45. for i in range(m):
  46. start, finish, time, weight = map(int, input().split())
  47. nodes[start].append([finish, time, weight - 3000000])
  48. nodes[finish].append([start, time, weight - 3000000])
  49. s = 1
  50. binarySearch()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement