베이컨 넘버
면접 대비시간 제한1초메모리 제한1024 MB
영화 N편의 출연 배우 목록이 주어질 때, 질의마다 두 배우를 잇는 가장 짧은 배우와 영화의 연결 경로를 찾고, 없으면 -1을 출력합니다.
문제
Carlinhos는 영화를 좋아하고, 최근에는 다음과 같이 정의되는 베이컨 넘버에 푹 빠졌다.
- 배우 Kevin Bacon의 베이컨 넘버는 이다.
- 배우 와 같은 영화에 출연한 배우들의 베이컨 넘버 중 가장 작은 값을 라고 하면, 배우 의 베이컨 넘버는 이다.
즉, 베이컨 넘버는 같은 영화에 함께 출연한 두 배우를 연결된 것으로 볼 때, 배우와 Kevin Bacon 사이의 최단 경로를 나타낸다.
Carlinhos는 더 일반적인 문제에 관심이 있다. 두 배우가 주어졌을 때, 중간의 영화와 배우를 거쳐 둘을 어떻게 이을 수 있을까? 개의 영화와 각 영화에 명의 배우 중 누가 출연했는지가 주어진다. Carlinhos는 개의 질의에 답하려 한다. 번째 질의에서는 배우 와 배우 를 잇는 방법을 찾아야 한다. 형태의 수열을 찾아야 하며, 여기서 은 배우, 은 영화이고, 배우 는 영화 과 에 모두 출연해야 한다. 그런 수열이 없다면 없다고 보고해야 한다.
입력
첫 줄에는 두 정수 ()과 ()이 주어진다. 각각 영화의 수와 배우의 수이다.
이어지는 개의 줄은 영화를 나타낸다. 번째 줄의 첫 정수 ()는 영화 에 출연한 배우의 수이다. 뒤이어 1부터 까지의 배우 번호 개가 오름차순으로 공백을 두고 주어진다.
다음 줄에는 질의의 수 ()가 주어진다. 이어지는 개의 줄에는 두 정수 , ()가 주어지며, 이는 이어야 할 두 배우이다. 모든 영화의 출연 배우 수의 합은 최대 , 즉 이다.
출력
각 질의에 대해 수열이 없으면 을 한 줄에 출력한다. 수열이 있으면 두 줄을 출력한다. 첫 줄에는 연결에 포함된 배우의 수 ()를 쓴다. 둘째 줄에는 배우 명과 영화 편이 번갈아 나오는 수열을 출력한다. 연결 방법이 여러 가지라면 그중 아무거나 출력해도 된다.