커플 만나기
시간 제한1초메모리 제한128 MB
각 도시가 나가는 방향 간선을 하나씩 가진 함수 그래프에서, 두 출발 도시가 함께 도달할 수 있는 도시까지의 최소 이동 횟수 합을 각 질의마다 구하고 불가능하면 -1을 출력한다.
문제
Nlogonia의 항공 규정에 따르면 모든 도시는 다른 한 도시로 향하는 출발 항공편을 정확히 하나 등록해야 한다. 항공편은 등록된 방향으로만 이용할 수 있다. 즉, 도시 에서 도시 로 가는 항공편이 등록되어 있어도 에서 로 가는 항공편이 있다는 뜻은 아니다. 모든 도시가 출발 항공편을 정확히 하나 등록하므로, 등록된 항공편의 총 수는 도시의 수와 같다.
커플 매칭 협회는 두 사람이 만나기 위해 타야 하는 항공편 수의 최솟값을 계산해 주는 서비스를 운영한다. 두 사람은 둘 다 살지 않는 도시에서 만나도 된다. 두 사람이 각각 도시 와 도시 에서 출발한다고 할 때, 서비스는 와 양쪽에서 항공편으로 도달할 수 있는 도시 중에서 에서 까지 필요한 항공편 수와 에서 까지 필요한 항공편 수의 합이 최소가 되는 를 찾는다. 도시 는 , 또는 둘 다와 같을 수도 있다.
등록된 모든 항공편의 목록과 여러 개의 질의가 주어진다. 각 질의는 한 커플이 사는 두 도시를 나타낸다. 각 질의에 대해 두 사람이 만나기 위해 필요한 항공편 수의 최솟값을 구하라.
입력
입력은 여러 개의 테스트 케이스로 이루어지며 파일의 끝에서 종료된다.
각 테스트 케이스는 여러 줄로 주어진다.
- 첫째 줄에는 도시의 수를 나타내는 정수 이 주어진다 (). 도시는 부터 까지 번호가 매겨져 있다.
- 둘째 줄에는 개의 정수 이 주어진다. 는 도시 에서 등록된 유일한 출발 항공편이 향하는 도시를 뜻한다 (, ).
- 셋째 줄에는 질의의 수를 나타내는 정수 가 주어진다 ().
- 이어지는 개의 줄에는 각각 한 커플이 사는 두 도시를 나타내는 정수 와 가 주어진다 ().
한 테스트 케이스 안에서, 어떤 도시 에서 어떤 도시 로 항공편으로 이동할 수 있다면 그때 필요한 항공편 수는 최대 이다.
출력
각 질의마다 한 줄씩 출력한다. 커플이 항공편으로 만날 수 있다면 만나기 위해 타야 하는 항공편 수의 최솟값을 출력하고, 결코 만날 수 없다면 을 출력한다. 모든 테스트 케이스의 답을 순서대로 출력한다.