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

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

킹 (작은 입력)

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

요약
칸 수가 최대 16개인 판에서 불탄 칸을 피해 킹이 방문하지 않은 이웃 칸으로 이동할 때, 최적 플레이에서 누가 이기는지 판정한다.
난이도

보통10점 중 6점

유형
게임 이론, DFS, 비트 연산
정답자
아직 제출이 없습니다

문제

앨리스와 밥이 RR행 CC열, 모두 RCRC개의 칸으로 이루어진 체스판에서 게임을 한다. 이 칸 중 일부는 불에 타 있다.

게임을 시작할 때 킹은 타지 않은 칸 하나에 놓여 있고, 앨리스와 밥이 번갈아 킹을 움직인다.

한 번의 차례에 킹은 인접한 8개 칸 중 하나로 반드시 움직여야 하고, 다음 두 조건을 지켜야 한다.

  • 도착하는 칸은 타지 않은 칸이다.
  • 킹이 한 번이라도 있었던 칸으로는 갈 수 없다.

움직일 수 없는 사람이 게임에서 진다. 앨리스가 먼저 움직인다. 두 사람이 모두 최선으로 움직일 때 누가 이기는지 구하라.

입력

첫째 줄에 테스트 케이스의 개수 NN이 주어진다.

다음으로 테스트 케이스가 NN개 주어진다. 각 테스트 케이스의 첫째 줄에는 두 정수 RR, CC가 주어진다. 이어지는 RR개 줄에는 한 행의 CC개 칸을 나타내는 길이 CC의 문자열이 주어진다. 문자열은 '.', '#', 'K' 세 문자만 사용한다.

  • '#'은 타 있는 칸이다.
  • '.'은 타지 않았고 비어 있는 칸이다.
  • 'K'는 게임을 시작할 때 킹이 있는 칸이다.

각 테스트 케이스에 'K'는 정확히 하나 있다.

제한

  • 1≤N≤1001 \le N \le 100
  • 1≤R,C≤41 \le R, C \le 4

출력

각 테스트 케이스마다 한 줄에 "Case #XX: "를 출력하고(XX는 1부터 시작하는 테스트 케이스 번호), 그 뒤에 앨리스가 이기면 A, 밥이 이기면 B를 출력한다.

예제3

  1. 예제 1

    입력
    2
    2 2
    K.
    .#
    4 2
    K#
    .#
    .#
    .#
    
    예상 출력
    Case #1: B
    Case #2: A
    
  2. 예제 2

    입력
    1
    1 1
    K
    
    예상 출력
    Case #1: B
    
  3. 예제 3

    입력
    2
    1 3
    K..
    1 4
    K...
    
    예상 출력
    Case #1: B
    Case #2: A