빨강 검정 징검다리
시간 제한9초메모리 제한256 MB
적대적으로 색을 고르는 상대에 맞서 빨강 검정 방향 그래프에서 영원히 이동하도록 미리보기 큐 크기의 최솟값을 구합니다.
문제
존과 베시가 방향 그래프에서 게임을 한다. 그래프는 두 사람 모두 알고 있다. 정점에는 번부터 번까지 번호가 붙어 있고, 정점 사이의 간선에는 방향이 있으며 각 간선은 빨간색이거나 검은색이다. 그래프와 별개로 크기가 인 큐가 하나 있고, 큐에 든 색은 두 사람 모두 볼 수 있다.
게임을 시작할 때 존은 번 정점에 말을 놓고 큐는 비어 있다. 베시가 큐를 빨간색과 검은색으로 가득 채우면 본 게임이 시작된다.
한 차례는 이렇게 진행된다.
- 존이 큐의 맨 앞에서 색을 하나 꺼낸다.
- 존은 말이 놓인 정점에서 나가는 간선 중 꺼낸 색과 같은 간선 하나를 골라 그 간선으로 말을 옮긴다. 자기 자신으로 돌아오는 간선을 골라도 된다.
- 큐가 한 칸 비므로 베시가 큐의 끝에 색을 하나 채운다.
꺼낸 색과 같은 나가는 간선이 없어서 존이 말을 옮기지 못하면 베시가 이긴다. 존이 게임을 영원히 이어가면 존이 이긴다. 베시는 큐를 처음 채울 때도 매 차례 색을 채울 때도 존의 상황을 보고 색을 고르며, 존은 큐에 든 개의 색을 모두 보고 간선을 고른다.
그래프가 주어질 때, 베시가 색을 어떻게 고르더라도 존이 이기는 큐의 최소 크기 를 구하라.
입력
첫 줄에 테스트 케이스의 개수 ()가 주어진다.
각 테스트 케이스의 첫 줄에는 정점의 개수 ()이 주어진다. 이어지는 개의 줄에는 빨간 간선의 인접 행렬이 주어진다. 각 줄에는 공백으로 구분된 개의 정수가 있고, 번째 줄의 번째 수가 이면 에서 로 가는 빨간 간선이 있다는 뜻이고 이면 없다는 뜻이다. 그다음 개의 줄에는 같은 방식으로 검은 간선의 인접 행렬이 주어진다. 말의 시작 정점은 항상 번이다.
존이 이길 수 있는 테스트 케이스에서 최소 는 이하이다.
출력
각 테스트 케이스마다 존이 이기는 최소의 를 한 줄에 출력한다. 큐의 크기를 얼마로 잡아도 존이 이길 수 없으면 을 출력한다.