import sys
sys.setrecursionlimit(150000)
input = sys.stdin.readline
n=int(input()) # 노드 개수
target1, target2 = map(int,input().split()) # 검색 대상
cnt=1 # 방문 순서 정의, cnt를 가산하며 촌수 계산
m=int(input()) # Edge, 즉 노드 간 관계의 수
graph = [[] for i in range(n+1)]
state = [0 for _ in range(n+1)]
for i in range(m): # 무방향 그래프
a,b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
def recur(node):
global cnt # global을 통해 함수 내부에서도 활용
state[node]=cnt # 방문 순서를 state에 저장
for nxt in graph[node]:
if state[nxt]==0: # 방문하지 않았다면?
cnt+=1 # 촌 수 가산
recur(nxt) # 다음 촌 수 호출
cnt = cnt-1 # 시작 정점을 1로 설정했기에, -1을 하여 촌수 계산
recur(max(target1,target2)) # 탐색 시작
if state[target1]!= 0 and state[target2]!=0: # 만약 target 중 하나 이상이 0이라면 방문할 수 없는 노드
print(abs(state[target1]-state[target2])) # 둘 다 0이 아니면 촌 수 출력
else:
print(-1) # 하나 이상 0이면 -1 출력
댓글남기기