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

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

지도를 모아라!

면접 대비

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

요약
각자가 1일부터 30일 중 특정 날짜에만 시간이 있을 때, 여러 번의 대면 만남을 거쳐 모든 지도 조각을 한 사람에게 모으는 가장 빠른 날짜를 구한다.
난이도

보통10점 중 6점

유형
그래프, BFS, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

아주 먼 옛날, 야오씨가 남겼다고 전해지는 전설의 비보가 하치오지 어딘가에 잠들어 있다고 한다. 그 위치를 가리킨다고 하는 보물 지도는 여러 조각으로 나뉜 상태로 야오씨의 n명의 후손들이 대대로 물려받았다.

지금 야오씨의 후손들은 힘을 합쳐 그 비보를 손에 넣으려 하고 있었다. 그런데 비보의 위치를 가리키는 보물 지도의 일부분만으로는 비보를 찾을 수 없다. 그래서 야오씨의 후손들은 전원이 모여 지도를 한곳에 모으려 했다. 하지만 막상 실행에 옮기려 해도 일정이 잘 맞지 않아 모일 수가 없었다. 그러나 이 비보에 관한 정보는 일족 안에서 비밀리에 전해 내려온 귀중한 정보이다. 유출 위험을 고려하면 공공 통신 수단으로 지도를 주고받는 것은 논외이다.

그래서 후손끼리 직접 만나 지도를 건네주는 일을 반복해, 한 명의 후손에게 지도를 모으기로 했다. 한 사람이 하루에 만날 수 있는 인원에 제한은 없지만, 서로 일정이 비어 있어야 한다.

당신의 일은 각 후손에 대한 일정이 비어 있는 날의 목록에서 지도를 모으려면 최소 며칠이 필요한지 구하는 프로그램을 작성하는 것이다.

참고로 야오씨 일족의 결속은 매우 단단하다. 최종적으로 지도 전체를 손에 넣은 후손이 다른 후손을 배신하고 비보를 들고 달아나면 일족의 제재를 받게 된다. 그 제재는 극히 무서운 것이어서, 실제로 그 후손이 비보를 들고 달아나는 것은 사실상 불가능하다.

입력

입력은 여러 데이터 세트로 이루어진다.

각 데이터 세트는 여러 행으로 이루어진다. 첫 번째 행에는 지도 조각을 가진 사람의 수를 나타내는 정수 n (1 < n ≤ 50)이 적혀 있다. 이어지는 n행에는 각 후손의 일정이 적혀 있다. i행은 i번째 후손의 일정을 나타내며, 여러 정수가 공백 하나로 구분되어 적혀 있다. 첫 번째 정수 f_i (0 ≤ f_i ≤ 30)는 그 후손의 일정이 비어 있는 날의 일수를 나타내는 정수이다. 이어지는 f_i개의 정수는 일정이 비어 있는 날짜를 나타낸다. 이 날짜들은 서로 다르며, 모두 1 이상 30 이하이다.

입력의 마지막에는 0만 포함된 한 행이 있다.

출력

각 데이터 세트에 대해 정수 하나를 한 행에 출력한다. 30일 이내에 지도를 모을 수 있으면 지도를 모으는 데 최소한으로 필요한 일수를, 모을 수 없으면 -1을 출력한다.

추기: 위의 "지도를 모으는 데 최소한으로 필요한 일수"는 1일을 기점으로 가장 빨리 모든 지도가 모이는 날짜를 뜻한다.

예제1

  1. 예제 1

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