Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- В этой задаче нужно реализовать алгоритм Дейкстры за O(n^2). Про него подробнее можно почитать здесь: https://ru.algorithmica.org/cs/shortest-paths/dijkstra/
- Пример кода на python:
- n, m = map(int, input().split())
- g = [[] for i in range(n)]
- for i in range(m):
- x, y, c = map(int, input().split())
- x -= 1
- y -= 1
- g[x].append((y, c))
- g[y].append((x, c))
- start, end = map(int, input().split())
- start -= 1
- end -= 1
- inf = 1000000000
- w = [inf for i in range(n)]
- used = [False for i in range(n)]
- w[start] = 0
- for i in range(n):
- cur = -1
- cur_w = inf
- for e in range(n):
- if not used[e] and w[e] < cur_w:
- cur = e
- cur_w = w[e]
- if cur == -1:
- break
- used[cur] = True
- for to in g[cur]:
- w[to[0]] = min(w[to[0]], w[cur] + to[1])
- if not used[end]:
- print(-1)
- else:
- print(w[end])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement