만드는 중입니다

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

투자자 보고서

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

요약
각 컨설턴트가 개선 사항 하나를 골라 상위 관리자에게 보고하고, 관리자가 보고서를 이어 붙여 최종 보고서가 오름차순이 될 수 있는지 판단합니다.
난이도

보통10점 중 7점

유형
트리, 동적 계획법, 비트 연산, 정렬
정답자
아직 제출이 없습니다

문제

회사에는 nn마리의 다람쥐가 일한다(n≥2n \ge 2). 다람쥐에게는 1부터 nn까지 번호가 붙어 있다. 1번 다람쥐는 회사의 창립자이고, 나머지 다람쥐는 각각 직속 상사가 정확히 한 명이다. 즉 다람쥐의 위계는 뿌리가 있는 트리이며, 부모 정점이 상사, 자식 정점이 부하다. 부하가 있는 다람쥐를 관리자, 나머지를 컨설턴트라고 부른다. 회사 구조상 모든 관리자의 직속 부하는 최대 8명이다. 창립자도 관리자에 포함된다.

창립자는 최근 제품 개선 사항을 투자자에게 보고하려고 한다. 각 개선 사항은 어떤 컨설턴트의 작업 결과이다. 개선 사항에는 완료된 순서대로 번호가 붙어 있다.

각 컨설턴트가 가진 개선 사항 목록이 주어진다. 컨설턴트는 그중 하나를 골라 직속 관리자에게 보고해야 한다. 따라서 컨설턴트의 보고서는 개선 사항 하나로만 이루어진다.

각 관리자(창립자 포함)는 부하들이 올린 보고서를 모아 자신의 보고서를 만든다. 부하들의 보고서를 내용을 바꾸지 않고 원하는 순서로 이어 붙인다. 예를 들어 첫 번째 보고서가 [1, 3], 두 번째 보고서가 [2, 4, 10]이면 결과는 [2, 4, 10, 1, 3] 또는 [1, 3, 2, 4, 10]일 수 있으며, 다른 결과는 나올 수 없다.

창립자는 보고서를 최대한 논리적으로 만들고 싶어 한다. 그래서 자신의 보고서에 들어 있는 개선 사항이 번호가 증가하는 순서, 즉 시간 순서로 나열되기를 원한다. 컨설턴트가 보고할 개선 사항을 고르고, 관리자가 부하들의 보고서를 이어 붙일 순서를 정해서 최종 보고서의 개선 사항이 시간 순서로 나오도록 해 주세요.

입력

첫 줄에 정수 nn(2≤n≤1000002 \le n \le 100000)이 주어진다. 이후 한 줄에 하나씩 nn마리 다람쥐의 설명이 주어진다.

  • 관리자라면 줄이 1로 시작하고, 이어서 직속 부하의 수 kik_i(1≤ki≤81 \le k_i \le 8), 그다음 2 이상 nn 이하의 서로 다른 부하 번호 kik_i개가 온다.
  • 컨설턴트라면 줄이 2로 시작하고, 이어서 보고할 수 있는 개선 사항의 수 mim_i, 그다음 1 이상 100000 이하의 서로 다른 개선 사항 번호 mim_i개가 온다.

1번 다람쥐는 항상 관리자다. 나머지 다람쥐는 누군가의 부하로 정확히 한 번 언급되며, 모두 직간접적으로 1번의 부하이다.

모든 컨설턴트의 mim_i 합은 100000을 넘지 않는다. 같은 개선 사항을 서로 다른 두 컨설턴트가 만든 경우는 없다. 즉 컨설턴트들이 언급한 개선 사항 번호는 모두 서로 다르다.

출력

요구한 대로 보고서를 만들 수 없으면 No를 출력한다.

만들 수 있으면 Yes를 출력한다. 이어서 증명서(certificate)를 출력해도 된다. 증명서는 번호 순서대로 각 다람쥐에 대해 다음을 나타낸다.

  • 관리자라면 부하들의 보고서를 놓아야 할 순서대로 부하 목록을 출력한다.
  • 컨설턴트라면 보고할 개선 사항의 번호를 출력한다.

이 문제에는 특이한 점이 있다. 증명서는 출력해도 되고 출력하지 않아도 된다. 증명서를 출력하지 않아도 보고서를 만들 수 있는지 올바르게 판정하면 부분 점수를 받는다.

주의할 점은, 잘못된 증명서를 출력하면 Yes/No 판정이 맞더라도 그 테스트는 오답 판정을 받고 0점이 된다는 것이다.

힌트

두 번째 예제에서는 증명서를 출력하지 않았다. 이는 부분 점수 해답에 해당한다.

세 번째 예제에서는 모든 컨설턴트가 개선 사항을 정확히 하나씩 만들었으므로 고를 수 있는 것이 없다.

세 번째 관리자는 보고서를 [1, 3] 또는 [3, 1]로 만들 수 있다.

첫 번째 관리자는 세 번째 관리자의 보고서 가능성을 모두 고려하면 보고서가 네 가지 있다. [1, 3] + [2] = [1, 3, 2], [2] + [1, 3] = [2, 1, 3], [3, 1] + [2] = [3, 1, 2], [2] + [3, 1] = [2, 3, 1]이다. 그러나 이 중 어떤 보고서도 개선 사항이 시간 순서로 나열되지 않는다.

예제3

  1. 예제 1

    입력
    6
    1 3 5 4 6
    2 3 10 61 60
    2 2 80 20
    2 2 40 70
    1 2 3 2
    2 4 30 90 91 92
    
    예상 출력
    Yes
    5 6 4
    10
    20
    40
    2 3
    30
    
  2. 예제 2

    입력
    3
    1 2 2 3
    2 1 1
    2 1 2
    
    예상 출력
    Yes
    2 3
    1
    2
    
  3. 예제 3

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