타일 게임

시간 제한1초메모리 제한128 MB

요약
검은 칸이 있는 격자에서 두 사람이 번갈아 인접한 흰 칸에 번호를 이어 쓰며, 이동할 수 없는 사람이 진다. 최적의 플레이에서 승자를 구한다.
난이도

어려움10점 중 8점

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

문제

타일 게임은 RR개의 행과 CC개의 열로 이루어진 직사각형 판에서 두 명이 겨루는 게임이다. 판의 각 칸(타일)은 정사각형이며, 게임을 시작할 때 일부 타일은 검은색으로 칠해져 있고 나머지는 흰색이다. 1번 참가자와 2번 참가자는 번갈아 가며 수를 두고, 더 이상 올바른 수를 둘 수 없는 사람이 진다.

1번 참가자가 먼저 시작한다. 첫 번째 수는 흰색 타일 하나를 골라 그 위에 숫자 11을 적는 것이다. 이후 ii번째 수는, 숫자 i−1i-1이 적힌 타일과 상하좌우로 인접한(대각선은 제외) 아직 사용하지 않은 흰색 타일에 숫자 ii를 적는 것이다. 따라서 1번 참가자는 항상 홀수를, 2번 참가자는 항상 짝수를 적게 된다.

판의 초기 상태가 주어질 때, 두 사람이 모두 최적으로 둔다면 누가 이기는지 판별하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어지며 파일의 끝까지 읽는다. 각 테스트 케이스의 첫 줄에는 판의 행과 열의 수를 나타내는 두 정수 RR, CC가 주어진다 (1≤R,C≤501 \le R, C \le 50). 이어지는 RR개의 줄에는 각각 CC개의 문자로 이루어진 문자열이 주어지며, 이는 판의 한 행을 나타낸다. 문자 '.'은 흰색 타일을, 대문자 'X'는 검은색 타일을 의미한다. 모든 테스트 케이스에서 적어도 하나의 타일은 흰색이다.

출력

각 테스트 케이스마다, 두 사람이 모두 최적으로 두었을 때 이기는 참가자의 번호(1 또는 2)를 한 줄에 출력한다.

예제4

  1. 예제 1

    입력
    3 4
    ....
    XX.X
    ...X
    3 4
    ....
    .X.X
    ...X
    3 4
    ....
    .X.X
    ....
    1 1
    .
    1 11
    ....X......
    
    예상 출력
    2
    1
    1
    1
    2
    
  2. 예제 2

    입력
    1 1
    .
    
    예상 출력
    1
    
  3. 예제 3

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

    입력
    2 2
    ..
    ..
    
    예상 출력
    2