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

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

그래프 오토마타 플레이어

면접 대비

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

요약
그래프 오토마타의 값 갱신 규칙과 0시각 상태가 주어질 때, -T시각 상태가 존재하고 유일한지 판단하며 행렬을 역행한다.
난이도

보통10점 중 7점

유형
행렬, 수학, 비트 연산
정답자
아직 제출이 없습니다

문제

당신과 할머니는 세포 오토마타를 일반화한 그래프 오토마타를 가지고 놀고 있다.

그래프 오토마타는 그래프로 표현된다. 그래프의 각 정점은 시간에 따라 변하는 값을 가지며, 그 값은 0 또는 1이다. 두 정점 사이에는 많아야 하나의 간선이 있고, 자기 자신으로 향하는 간선이 있을 수도 있다.

정점의 값은 다음 규칙에 따라 규칙적으로 변한다. 시간 t+1에서 정점 i의 값은, 정점 i에서 시간 t에 값이 1인 정점으로 향하는 간선의 개수가 홀수일 때에만 1이고, 그렇지 않으면 0이다.

건망증이 있는 할머니는 오토마타의 과거 상태를 잊어버렸다. 당신의 임무는 현재 시각과 상태로부터 과거 상태를 복원하는 프로그램을 작성하는 것이다. 타임머신은 너무 비싸다. 후보가 여러 개일 수도 있고, 일관된 상태가 없을 수도 있다. 그런 경우에는 알맞은 오류 메시지를 출력해야 한다.

입력

입력은 다음과 같은 형식이다.

N
a11 ... a1N
:
:
aN1 ... aNN
v1
:
:
vN
T

첫째 줄에는 정수 N (2 ≤ N ≤ 300)이 주어진다. N은 정점의 개수이다. 다음 N개 줄은 그래프의 인접 행렬을 나타낸다. (i,j)번째 원소가 1이면 정점 i에서 정점 j로 향하는 간선이 있고, 그렇지 않으면 간선이 없다. 그다음 N개 줄은 정점의 값 벡터를 나타낸다. i번째 원소는 시간 0에서 정점 i의 값이다. 행렬과 벡터의 각 원소는 0 또는 1이다. 마지막 줄에는 정수 T (1 ≤ T ≤ 100,000,000)가 주어진다. -T는 할머니가 상태를 알고 싶어 하는 시각이다.

출력

시간 -T에서의 값 벡터를 다음과 같이 한 줄에 공백 하나로 구분해 출력한다.

v1 ... vN

각 값은 공백 하나로 구분해야 한다. 일관된 값 벡터가 없으면 한 줄에 none을 출력한다. 후보가 여러 개여서 해가 유일하지 않으면 한 줄에 ambiguous를 출력한다.

예제3

  1. 예제 1

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

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

    입력
    2
    0 1
    0 0
    1
    0
    2
    
    예상 출력
    none