Advertisement
nq1s788

Untitled

Mar 23rd, 2025
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.96 KB | None | 0 0
  1. В этой задаче нужно реализовать алгоритм Дейкстры за O(n^2). Про него подробнее можно почитать здесь: https://ru.algorithmica.org/cs/shortest-paths/dijkstra/
  2.  
  3. Пример кода на python:
  4. n, m = map(int, input().split())
  5. g = [[] for i in range(n)]
  6. for i in range(m):
  7.     x, y, c = map(int, input().split())
  8.     x -= 1
  9.     y -= 1
  10.     g[x].append((y, c))
  11.     g[y].append((x, c))
  12. start, end = map(int, input().split())
  13. start -= 1
  14. end -= 1
  15. inf = 1000000000
  16. w = [inf for i in range(n)]
  17. used = [False for i in range(n)]
  18. w[start] = 0
  19. for i in range(n):
  20.     cur = -1
  21.     cur_w = inf
  22.     for e in range(n):
  23.         if not used[e] and w[e] < cur_w:
  24.             cur = e
  25.             cur_w = w[e]
  26.     if cur == -1:
  27.         break
  28.     used[cur] = True
  29.     for to in g[cur]:
  30.         w[to[0]] = min(w[to[0]], w[cur] + to[1])
  31. if not used[end]:
  32.     print(-1)
  33. else:
  34.     print(w[end])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement