- 현재있는 위치에서 +1, -1 이동가능하기 때문에 리스트 안에 넣어줘야 한다.
- visited 리스트를 만들어 방문을 했는지 안했는지를 검사하는 것과 동시에 그곳까지 가기 위해서는 몇초가 걸리는지 시간을 값으로 넣어준다.
- 메모리 : 131508 KB
- 시간 : 1412 ms
from collections import deque
import sys
def in_range(x):
return 1 <= x < n+1
def bfs(s):
q = deque()
q.append(s)
visited[s] = 0
curr = s
cnt = 0
while q:
x = q.popleft()
grid[x].sort()
for g in grid[x]:
if in_range(g) and visited[g] == -1:
visited[g] = visited[x]+1
q.append(g)
if g == e:
return visited[g]
n, m = tuple(map(int, sys.stdin.readline().split()))
s, e = tuple(map(int, sys.stdin.readline().split()))
visited = [-1]*(n+1)
grid = {}
for i in range(1,n+1):
grid[i] = [i-1,i+1]
for _ in range(m):
k,v = tuple(map(int, sys.stdin.readline().split()))
grid[k].append(v)
grid[v].append(k)
t = bfs(s)
print(t)