Advertisement
korol

Untitled

Jun 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. n = int(input())
  2. k = int(input())
  3. m = int(input())
  4. e = [[] for _ in range(n+1)]
  5. for _ in range(m):
  6. ot, ku, t = map(int, input().split())
  7. e[ot].append((ku, t))
  8. e[ku].append((ot, t))
  9.  
  10. from heapq import *
  11. ans = [10**10]*(n+1)
  12. ans[0], ans[1] = 0, 0
  13. ch = [(0, 1)]
  14. while ch:
  15. lt_snum = heappop(ch)
  16. l, num = lt_snum[0], lt_snum[1]
  17. if l > ans[num]:
  18. continue
  19. #print(ch)
  20. for nbr, s in e[num]:
  21. if nbr == n:
  22. #print(num, nbr, )
  23. if l+s < ans[nbr]:
  24. #print(num, nbr, l+s, 0)
  25. ans[nbr] = l+s
  26. heappush(ch, (l+s, nbr))
  27. elif (l+s)//k%2==0 and l+s < ans[nbr]:
  28. #print(num, nbr, l+s ,1)
  29. ans[nbr] = l+s
  30. heappush(ch, (l+s, nbr))
  31. else:
  32. if ((l+s)//k+1)*k < ans[nbr]:
  33. #print(num, nbr, ((l+s)//k+1)*k, 2)
  34. ans[nbr] = ((l+s)//k+1)*k
  35. heappush(ch, (((l+s)//k+1)*k, nbr))
  36. print(ans[n])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement