Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n, start, f = map(int, (input().split()))
- f -= 1
- start -= 1
- w = [[int(x) for x in input().split()] for _ in range(n)]
- dist = [float("inf") for x in range(n)]
- path = [(-1) for x in range(n)]
- used = [False for x in range(n)]
- def deix(start):
- dist[start] = 0
- for i in range(n):
- imin = n
- for j in range(n):
- if imin == n and (not (used[j])):
- imin = j
- if imin != n and dist[j] < dist[imin] and not (used[j]):
- imin = j
- used[imin] = True
- for j in range(n):
- if (w[imin][j] != -1) and not (used[j]):
- if w[imin][j] + dist[imin] < dist[j]:
- dist[j] = w[imin][j] + dist[imin]
- path[j] = imin
- deix(start)
- if dist[f] < float("inf"):
- ans = []
- while f != start:
- if path[f] != -1:
- ans.append(f + 1)
- f = path[f]
- ans.append(start + 1)
- ans.reverse()
- print(*ans)
- else:
- print(-1)
Advertisement
Add Comment
Please, Sign In to add comment