https://www.acmicpc.net/problem/5014
"""
from collections import deque
F, S, G, U, D = map(int, input().split())
step = [-1] * (1000000+1)
visited = [False] * (1000000+1)
def bfs(s):
visited[s] = True
step[s] = 0
q = deque([(s, 0)])
while q:
node, cnt = q.popleft()
if node == G:
break
for x in (node+U, node-D):
if 1 <= x <= F and not visited[x]:
visited[x] = True
step[x] = cnt+1
q.append((x, cnt+1))
bfs(S)
print(step[G] if step[G] != -1 else "use the stairs")
전형적인 BFS 문제로 숨바꼭질 문제하고 비슷했다.
처음에 step 배열을 전부 0으로 초기화 하고 마지막 print()문을 step[G] if step[G] != 0 else "use the stairs")과 같이 작성했는데, 이렇게 하면 S == G 즉 시작하는 지점하고 도착하는 지점이 같으면 "use the stairs"이 출력된다.
그래서 step 배열을 전부 -1로 초기화 하고 BFS가 돌기전에 시작하는 부분만 0으로 초기화 해줌으로써 시작지점과 도착지점이 같아도 제대로 된 정답이 출력될 수 있도록 함.