https://www.acmicpc.net/problem/2644
dfs(사람번호, 촌수)
매개변수로 들어온 사람노드를 방문처리 and 촌수 +1 , 현재 노드가 b라면 result에 저장해준다.
dfs가 재귀함수로 반복되므로 일반 정수 변수에 저장해두면 이전에 호출되었던 dfs로 돌아가면서 촌수가 다르게 저장됨.
고로, result 리스트에 원소로 저장해두기!현재 노드에 엮여있는 자식, 부모 등 노드들 dfs 돌리기
# (clone)
N = int(input())
a, b = map(int, input().split()) # 계산해야하는 두 사람의 번호
M = int(input())
relation = [[] for _ in range(N+1)] # 엮여있는 노드 저장하는 2차원 배열
visited = [False] * (N+1)
result = []
for _ in range(M):
x, y = map(int, input().split())
relation[x].append(y) # 자식
relation[y].append(x) # 부모
def dfs(v, num):
num += 1
visited[v] = True
if v == b:
result.append(num)
for i in relation[v]:
if not visited[i]:
dfs(i, num)
dfs(a, 0)
if len(result) == 0:
print(-1)
else:
print(result[0]-1)