신병트리대대 불침번 근무

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

요약
1번 방에서 시작해 각 방의 이웃 목록을 방문 횟수에 따라 순환하는 규칙으로 이동할 때, 모든 방을 방문하는 데 필요한 총 이동 횟수와 마지막 방 번호를 구하고 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

유형
그래프, 시뮬레이션, 구현, 트리
정답자
아직 제출이 없습니다

문제

3025년, 정예우주공군으로서 기본군사훈련단에 입소한 하늘이는 지구 저궤도에 트리 모양으로 신설된 신병트리대대에 배정되어 불침번 근무를 서게 되었다.

신병트리대대는 그 이름에 걸맞게 NN개의 방이 있으며, N−1N-1개의 복도가 서로 다른 방들을 사이클이 없는 트리 구조로 연결하고 있다. 구체적으로 ii번 방은 k_ik\_i개의 방과 복도로 직접 연결되어 있으며, 이들의 방 번호는 v_i,0,v_i,1,⋯ ,v_k_i−1v\_{i,0}, v\_{i,1}, \cdots, v\_{k\_i - 1}이다.

하늘이는 신병트리대대의 복잡한 트리 구조 속에서 길을 잃지 않고 순찰할 수 있도록 다음과 같은 특별한 순찰 규칙을 세웠다.

  • 하늘이는 11번 방에서 순찰을 시작한다.
  • 어떤 방을 방문했다면 순찰 일지에 해당 방의 번호 ii를 기록한다.
  • 방 번호 ii를 기록한 직후에 ii가 순찰 일지에 총 mm번 기록되어 있다면, 하늘이는 v_i,(m−1)mod  k_iv\_{i, (m-1) \mod k\_i}번 방으로 이동하며 순찰을 계속 진행한다.

하늘이가 모든 방의 번호를 최소 한 번씩은 순찰 일지에 기록할 때까지 위 과정을 반복할 때, 하늘이가 복도를 통해 다른 방으로 이동해야 하는 총 횟수와 마지막으로 도착하는 방의 번호를 구하여라. 만약 하늘이가 모든 방을 방문할 수 없다면 −1-1을 출력한다.

입력

첫째 줄에 방의 개수 NN(2≤N≤2×1052 \le N \le 2 \times 10^5)이 주어진다.

다음 NN개의 줄에 신병트리대대의 구조가 주어진다. 이 중 ii번째 줄에는 k_i+1k\_i+1개의 정수 k_i,v_i,0,v_i,1,⋯ ,v_i,k_i−1k\_i, v\_{i, 0}, v\_{i, 1}, \cdots, v\_{i, k\_i - 1}가 공백을 사이에 두고 주어진다.

출력

모든 방을 방문할 수 있다면, 첫째 줄에 총 이동 횟수와 마지막으로 도착한 방 번호를 공백을 사이에 두고 출력한다.

만약 모든 방을 방문하는 것이 불가능하다면 첫째 줄에 −1-1을 출력한다.

예제1

  1. 예제 1

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