問題
베카(Becca)와 테리(Terry)는 친근한 경쟁 관계인 미생물학자들이다. 연구에서 잠시 쉬고 싶을 때면 둘이 함께 게임을 하곤 한다. 이 게임은 R행 C열의 단위 칸 행렬에서 진행된다. 처음에 각 칸은 비어 있거나, 방사성 물질을 포함하고 있다.
각 플레이어의 차례에, 행렬에 빈 칸이 하나도 없다면 그 플레이어가 게임에서 진다. 그렇지 않으면 빈 칸 하나를 골라 그 칸에 박테리아 집락을 놓는다. 박테리아 집락에는 두 종류가 있다: H("horizontal")와 V("vertical").
- H형 집락을 빈 칸에 놓으면, 그 칸을 차지하여(비어 있지 않게 만들고), 또한 바로 서쪽(있다면)과 바로 동쪽(있다면) 칸으로 퍼지려고 시도한다.
- V형 집락을 빈 칸에 놓으면, 그 칸을 차지하여(비어 있지 않게 만들고), 또한 바로 남쪽(있다면)과 바로 북쪽(있다면) 칸으로 퍼지려고 시도한다.
어떤 집락(어느 타입이든)이 어떤 칸으로 퍼지려고 시도할 때마다:
- 그 칸에 방사성 물질이 있다면, 집락이 돌연변이를 일으키고 그 집락을 놓은 플레이어는 게임에서 진다.
- 그 칸이 비어 있다면, 집락이 그 칸을 차지해(비어 있지 않게 만들고) 위 규칙이 다시 발동한다(즉, 집락은 더 멀리 퍼지려고 시도한다).
- 그 칸에 이미 박테리아(어느 타입이든)가 있다면, 그 칸으로는 퍼지지 않는다.
어떤 플레이어가 할 수 있는 모든 수가 곧바로 패배로 이어질 수도 있으므로, 그 플레이어는 이미 운명이 정해져 있을 수 있다. 게임이 어떻게 진행되는지에 대한 예시는 아래의 샘플 설명을 참고하라.
베카가 먼저 수를 두고, 이후 두 플레이어는 번갈아 수를 두다가 한 명이 지면 게임이 끝난다. 두 플레이어가 최적으로 플레이한다면 누가 이길까? 그리고 베카가 이긴다면, 베카가 둘 수 있는 서로 다른 승리 시작 수는 몇 개인가? (두 시작 수는 사용한 칸이 다르거나, 집락의 종류가 다르거나, 혹은 둘 다 다를 때에만 서로 다르다고 한다.)
輸入
입력의 첫 줄에는 테스트 케이스 수 T가 주어진다.
T개의 테스트 케이스가 이어진다.
각 테스트 케이스는 먼저 정수 R, C가 주어진 한 줄로 시작하며,
이는 행렬의 행/열의 개수이다.
그 다음 R줄이 이어지며,
각 줄은 길이 C의 문자열이다.
i번째 줄의 j번째 문자는 행렬의 i번째 행 j번째 열을 나타낸다.
각 문자는 빈 칸을 의미하는 . 또는
방사성 물질이 있는 칸을 의미하는 # 중 하나이다.
輸出
각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력하라.
여기서 x는 (1부터 시작하는) 테스트 케이스 번호이고,
y는 정수이다.
베카가 이기지 못한다면 0을 출력하고,
베카가 이긴다면 위에서 설명한 서로 다른 승리 시작 수의 개수를 출력하라.
範例
5
2 2
..
.#
4 4
.#..
..#.
#...
...#
3 4
#.##
....
#.##
1 1
.
1 2
##
Case #1: 0
Case #2: 0
Case #3: 7
Case #4: 2
Case #5: 0