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

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

게이트

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

요약
각 게이트는 입력들의 다수 상태(0, 1/2, 1)를 출력한다. 모든 유효한 회로 상태에서 각 게이트의 상태가 고정되는지 판정한다.
난이도

어려움10점 중 8점

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

문제

nn개의 게이트로 이루어진 회로를 생각하자. 게이트에는 00번부터 n−1n-1번까지 번호가 매겨져 있다. 각 게이트는 여러 개의 입력과 정확히 하나의 출력을 가진다. 모든 입력과 출력은 00, 1/21/2, 11 중 하나의 상태를 가진다.

각 입력은 어떤 게이트의 출력 하나에 연결되며, 그 입력의 상태는 연결된 출력의 상태와 같다. 하나의 출력은 임의의 개수의 입력에 연결될 수 있다.

00번과 11번 게이트는 특별하다. 이 두 게이트는 입력이 전혀 없으며, 출력의 상태가 항상 고정되어 있다. 00번 게이트의 출력은 항상 00, 11번 게이트의 출력은 항상 11이다.

게이트의 출력 상태(줄여서 게이트의 상태)가 유효하다(valid)는 것은 다음 중 하나를 만족하는 경우이다.

  1. 상태가 00이고, 상태가 00인 입력의 개수가 상태가 11인 입력의 개수보다 많다.
  2. 상태가 1/21/2이고, 상태가 00인 입력의 개수와 상태가 11인 입력의 개수가 같다.
  3. 상태가 11이고, 상태가 11인 입력의 개수가 상태가 00인 입력의 개수보다 많다.
  4. 특별한 게이트(00번 또는 11번)이고, 그 상태가 각각 00 또는 11이다.

회로의 상태가 유효하다는 것은 모든 게이트의 상태가 유효하다는 뜻이다. 어떤 게이트의 상태가 고정되어 있다(fixed)는 것은, 회로의 모든 유효한 상태에서 그 게이트가 항상 같은 상태를 가진다는 뜻이다.

각 게이트에 대해 그 상태가 고정되어 있는지 판정하고, 고정되어 있다면 그 값을 구하는 프로그램을 작성하라.

입력

첫째 줄에 게이트의 개수 nn이 주어진다 (2≤n≤10,0002 \le n \le 10{,}000).

이어지는 n−2n-2개의 줄은 게이트의 연결을 설명한다. 위에서부터 순서대로 이 줄들은 게이트 2,3,…,n−12, 3, \dots, n-1에 대응하며, 게이트 ii에 해당하는 줄은 그 게이트의 입력을 나타낸다. 각 줄은 그 게이트의 입력 개수 kik_i로 시작하고(ki≥1k_i \ge 1), 이어서 kik_i개의 게이트 번호가 주어진다. 이 번호들은 게이트 ii의 각 입력에 출력이 연결된 게이트들의 번호이며, 입력 순서대로 나열된다. 한 줄의 숫자들은 공백 하나로 구분된다.

모든 게이트의 입력 개수의 총합은 200,000200{,}000을 넘지 않는다.

출력

nn개의 줄을 출력한다. ii번째 줄은 게이트 i−1i-1의 상태에 대한 결과이며, 다음 중 하나를 출력한다.

  • 0 — 상태가 00으로 고정된 경우
  • 1/2 — 상태가 1/21/2로 고정된 경우
  • 1 — 상태가 11로 고정된 경우
  • ? — 상태가 고정되지 않은 경우

힌트

예제3

  1. 예제 1

    입력
    5
    2 0 1
    2 4 2
    2 2 4
    
    예상 출력
    0
    1
    1/2
    ?
    ?
    
  2. 예제 2

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

    입력
    3
    2 0 1
    
    예상 출력
    0
    1
    1/2