Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- nodes = list()
- N = int(input())
- for i in range(N):
- nodes.append(list(map(int, input().split())))
- S, F = map(int, input().split())
- dist = [-1] * N
- def DFS(N, S, F, nodes):
- global dist
- dist[S - 1] = 0
- stack = [S - 1]
- prev = [-1] * N
- way = list()
- way.append(F)
- while stack:
- v = stack.pop(0)
- for i in range(N):
- if i == F + 2:
- break
- if nodes[v][i] == 1 and dist[i] == -1:
- stack.append(i)
- dist[i] = dist[v] + 1
- prev[i] = v + 1
- if dist[F - 1] == -1:
- print(-1)
- else:
- print(dist[F - 1])
- while F != S:
- F = prev[F - 1]
- way.append(F)
- print(*way[::-1])
- DFS(N, S, F, nodes)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement