https://www.acmicpc.net/problem/2644
from collections import deque
def printGraph(graph):
for i in range(1,len(graph)):
print(i,':',graph[i])
n = int(input())
x, y = map(int ,input().split())
m = int(input())
graph = [[] for _ in range(n+1)]
visited = [0] * (n+1)
count = 0
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
# printGraph(graph)
def bfs(x):
q = deque([])
q.append(x)
visited[x] = 1
while q:
v = q.popleft()
for item in graph[v]:
if visited[item] == 0:
visited[item] = visited[v] + 1
# print(visited[item])
q.append(item)
bfs(x)
print((visited[y]-1) if (visited[y]!=0) else (-1))
Algorithms / 백준 2644번 파이썬