만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

베이컨 넘버

면접 대비

시간 제한1초메모리 제한1024 MB

요약
영화 N편의 출연 배우 목록이 주어질 때, 질의마다 두 배우를 잇는 가장 짧은 배우와 영화의 연결 경로를 찾고, 없으면 -1을 출력합니다.
난이도

보통10점 중 4점

유형
BFS, 그래프, 해시맵
정답자
아직 제출이 없습니다

문제

Carlinhos는 영화를 좋아하고, 최근에는 다음과 같이 정의되는 베이컨 넘버에 푹 빠졌다.

  • 배우 Kevin Bacon의 베이컨 넘버는 00이다.
  • 배우 XX와 같은 영화에 출연한 배우들의 베이컨 넘버 중 가장 작은 값을 bb라고 하면, 배우 XX의 베이컨 넘버는 b+1b + 1이다.

즉, 베이컨 넘버는 같은 영화에 함께 출연한 두 배우를 연결된 것으로 볼 때, 배우와 Kevin Bacon 사이의 최단 경로를 나타낸다.

Carlinhos는 더 일반적인 문제에 관심이 있다. 두 배우가 주어졌을 때, 중간의 영화와 배우를 거쳐 둘을 어떻게 이을 수 있을까? NN개의 영화와 각 영화에 MM명의 배우 중 누가 출연했는지가 주어진다. Carlinhos는 QQ개의 질의에 답하려 한다. ii번째 질의에서는 배우 xix_i와 배우 yiy_i를 잇는 방법을 찾아야 한다. xi=a1,f1,a2,f2,…,fk−1,ak=yix_i = a_1, f_1, a_2, f_2, \dots , f_{k-1}, a_k = y_i 형태의 수열을 찾아야 하며, 여기서 1≤aj≤N1 \le a_j \le N은 배우, 1≤fj≤M1 \le f_j \le M은 영화이고, 배우 aja_j는 영화 fj−1f_{j-1}과 fjf_j에 모두 출연해야 한다. 그런 수열이 없다면 없다고 보고해야 한다.

입력

첫 줄에는 두 정수 NN (1≤N≤1001 \le N \le 100)과 MM (1≤M≤1061 \le M \le 10^6)이 주어진다. 각각 영화의 수와 배우의 수이다.

이어지는 NN개의 줄은 영화를 나타낸다. ii번째 줄의 첫 정수 nin_i (1≤ni≤M1 \le n_i \le M)는 영화 ii에 출연한 배우의 수이다. 뒤이어 1부터 MM까지의 배우 번호 nin_i개가 오름차순으로 공백을 두고 주어진다.

다음 줄에는 질의의 수 QQ (1≤Q≤1041 \le Q \le 10^4)가 주어진다. 이어지는 QQ개의 줄에는 두 정수 xix_i, yiy_i (1≤xi≠yi≤M1 \le x_i \ne y_i \le M)가 주어지며, 이는 이어야 할 두 배우이다. 모든 영화의 출연 배우 수의 합은 최대 10610^6, 즉 ∑ini≤106\sum_i n_i \le 10^6이다.

출력

각 질의에 대해 수열이 없으면 −1-1을 한 줄에 출력한다. 수열이 있으면 두 줄을 출력한다. 첫 줄에는 연결에 포함된 배우의 수 kik_i (2≤ki≤1062 \le k_i \le 10^6)를 쓴다. 둘째 줄에는 배우 kik_i명과 영화 ki−1k_i - 1편이 번갈아 나오는 수열을 출력한다. 연결 방법이 여러 가지라면 그중 아무거나 출력해도 된다.

예제1

  1. 예제 1

    입력
    4 6
    3 1 2 5
    3 1 3 5
    2 2 4
    1 6
    4
    1 5
    1 4
    3 4
    1 6
    
    예상 출력
    2
    1 1 5
    3
    1 1 2 3 4
    4
    3 2 1 1 2 3 4
    -1