그냥 bfs쓰면 쉬운 문제이다.
뱀, 사다리 두가지를 리스트로 만들려고 했지만 그럴 필요가 없다.
만약 리스트안에 있으면 해당 숫자로 바꿔주고 그 숫자가 방문한 숫자이면 가지말자.
from collections import deque
def bfs(x):
global ans
visited[x] = 0
q = deque()
q.append(x)
while q:
x = q.popleft()
for i in range(1, 7):
nx = x + i
if 1 <= nx <= 100 and visited[nx]:
if a[nx]:
nx = a[nx][0]
if visited[nx]:
q.append(nx)
visited[nx] = 0
board[nx] = board[x] + 1
N, M = map(int, input().split())
board = [0] * 101
visited = [1] * 101
a = [[] for _ in range(101)]
ans = 0
for _ in range(N + M):
u, v = map(int, input().split())
a[u].append(v)
bfs(1)
print(board[100])