아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

당신의 프라이버시를 지켜라!

시간 제한8초메모리 제한512 MB

요약
각 구성원이 아는 개인정보 목록과 유출된 정보 목록이 주어질 때, 유출 집합을 정확히 설명할 수 있는 유일한 구성원을 찾고, 없으면 -1을 출력한다.
난이도

보통10점 중 6점

유형
구현, 완전 탐색, 배열, 수학
정답자
아직 제출이 없습니다

문제

ICPC (International Committee of Privacy and Confidence)는 전 세계에 많은 구성원을 둔 조직이며, 이름 그대로 프라이버시를 매우 중시하는 비밀주의자들의 단체이다. 구성원들은 업무상 다른 구성원의 개인정보를 알게 될 수 있지만, 이를 철저히 숨길 의무가 있다.

그런데 어느 날 몇몇 구성원의 개인정보가 유출되고 말았다! ICPC의 ACM (Account Control Manager: 계정 관리 책임자)인 당신은 정보를 유출한 구성원을 신속히 밝혀내어 엄중히 처분해야 한다.

당신은 구성원보다 큰 권한을 가진 관리자이므로 누가 누구의 개인정보를 알고 있는지 완전히 파악하고 있다. 물론 어떤 구성원도 자신이 모르는 구성원의 개인정보를 유출할 수는 없다. 그러나 범인이 자신이 아는 모든 개인정보를 유출했다고는 할 수 없다. 개인정보가 유출된 구성원의 목록에서 누가 개인정보를 유출했는지 (가능하다면) 밝혀내라.

그런데 ICPC라는 조직이 무엇을 목적으로 활동하는지는 최고 기밀이며, 관리자의 권한으로도 알 수 없다.

입력

입력 파일은 여러 데이터 세트를 포함한다. 하나의 데이터 세트는 다음 형식으로 주어진다.

N
M1 p1,1 p1,2... p1,M1
M2 p2,1 p2,2... p2,M2
:
MN pN,1 pN,2... pN,MN
K l1 l2... lK

N (2 ≤ N ≤ 100)은 구성원의 수를 나타내는 정수이다. 각 구성원에는 1부터 N까지의 번호가 붙어 있다. 이어지는 N개의 줄에는 각 구성원의 번호 순서대로 그 구성원이 알고 있는 개인정보의 목록이 주어진다. 각 줄의 첫 정수 Mi (0 ≤ Mi ≤ N)는 뒤에 오는 정수의 개수를 나타낸다. 나머지 정수는 그 구성원이 개인정보를 알고 있는 구성원의 번호를 나타낸다. 마지막 줄에는 개인정보가 유출된 구성원의 목록이 주어진다. K (1 ≤ K ≤ N)는 유출된 구성원의 수를 나타내며, 나머지 정수는 유출된 구성원의 번호를 나타낸다.

입력은 올바르게 주어진다고 가정해도 좋다. 즉, 어떤 구성원이 알고 있는 개인정보의 목록에 같은 구성원의 번호가 두 번 이상 주어지거나 존재하지 않는 구성원의 번호가 주어지는 일은 없다. 유출된 구성원의 번호 목록도 마찬가지이다.

N = 0일 때 입력이 끝난다.

출력

개인정보를 유출한 구성원을 밝혀낼 수 있다면 그 구성원의 번호를 출력하라. 밝혀낼 수 없다면 -1을 출력하라.

밝혀낼 수 없는 경우는 다음 두 가지이다. 하나는 유출했을 가능성이 있는 구성원이 둘 이상인 경우이다. 다른 하나는 어떤 구성원이 유출했다고 가정해도 모순이 생기는 경우이다. 어느 쪽이든 당신의 프로그램은 -1을 출력해야 한다.

예제1

  1. 예제 1

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