게이트
시간 제한3초메모리 제한128 MB
각 게이트는 입력들의 다수 상태(0, 1/2, 1)를 출력한다. 모든 유효한 회로 상태에서 각 게이트의 상태가 고정되는지 판정한다.
문제
개의 게이트로 이루어진 회로를 생각하자. 게이트에는 번부터 번까지 번호가 매겨져 있다. 각 게이트는 여러 개의 입력과 정확히 하나의 출력을 가진다. 모든 입력과 출력은 , , 중 하나의 상태를 가진다.
각 입력은 어떤 게이트의 출력 하나에 연결되며, 그 입력의 상태는 연결된 출력의 상태와 같다. 하나의 출력은 임의의 개수의 입력에 연결될 수 있다.
번과 번 게이트는 특별하다. 이 두 게이트는 입력이 전혀 없으며, 출력의 상태가 항상 고정되어 있다. 번 게이트의 출력은 항상 , 번 게이트의 출력은 항상 이다.
게이트의 출력 상태(줄여서 게이트의 상태)가 유효하다(valid)는 것은 다음 중 하나를 만족하는 경우이다.
- 상태가 이고, 상태가 인 입력의 개수가 상태가 인 입력의 개수보다 많다.
- 상태가 이고, 상태가 인 입력의 개수와 상태가 인 입력의 개수가 같다.
- 상태가 이고, 상태가 인 입력의 개수가 상태가 인 입력의 개수보다 많다.
- 특별한 게이트(번 또는 번)이고, 그 상태가 각각 또는 이다.
회로의 상태가 유효하다는 것은 모든 게이트의 상태가 유효하다는 뜻이다. 어떤 게이트의 상태가 고정되어 있다(fixed)는 것은, 회로의 모든 유효한 상태에서 그 게이트가 항상 같은 상태를 가진다는 뜻이다.
각 게이트에 대해 그 상태가 고정되어 있는지 판정하고, 고정되어 있다면 그 값을 구하는 프로그램을 작성하라.
입력
첫째 줄에 게이트의 개수 이 주어진다 ().
이어지는 개의 줄은 게이트의 연결을 설명한다. 위에서부터 순서대로 이 줄들은 게이트 에 대응하며, 게이트 에 해당하는 줄은 그 게이트의 입력을 나타낸다. 각 줄은 그 게이트의 입력 개수 로 시작하고(), 이어서 개의 게이트 번호가 주어진다. 이 번호들은 게이트 의 각 입력에 출력이 연결된 게이트들의 번호이며, 입력 순서대로 나열된다. 한 줄의 숫자들은 공백 하나로 구분된다.
모든 게이트의 입력 개수의 총합은 을 넘지 않는다.
출력
개의 줄을 출력한다. 번째 줄은 게이트 의 상태에 대한 결과이며, 다음 중 하나를 출력한다.
0— 상태가 으로 고정된 경우1/2— 상태가 로 고정된 경우1— 상태가 로 고정된 경우?— 상태가 고정되지 않은 경우
힌트
