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

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

킹 게임

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

요약
불탄 칸이 있는 작은 체스판에서 두 사람이 번갈아 왕을 방문하지 않은 이웃 칸으로 옮기며, 최적 플레이에서 누가 이기는지 판정한다.
난이도

어려움10점 중 9점

유형
게임 이론, 그래프, DFS, 백트래킹
정답자
아직 제출이 없습니다

문제

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

타지 않은 칸 하나에 킹을 놓고, 앨리스와 밥이 번갈아 킹을 한 칸씩 움직인다.

한 차례에는 킹을 현재 칸과 인접한 8개의 칸 중 하나로 옮겨야 하고, 다음 두 조건을 지켜야 한다.

  • 옮겨 갈 칸은 타지 않은 칸이어야 한다.
  • 킹이 그 칸에 한 번도 들어간 적이 없어야 한다. 시작 칸도 이미 들어간 칸으로 센다.

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

입력

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

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

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

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

출력

각 테스트 케이스마다 한 줄에 Case #X: 를 출력한 다음, 앨리스가 이기면 A, 밥이 이기면 B를 이어서 출력한다. XX는 1부터 시작하는 테스트 케이스 번호다.

제한

  • 1≤N≤1001 \le N \le 100
  • 1≤R,C≤151 \le R, C \le 15

예제3

  1. 예제 1

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

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

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