만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

얼음 땅

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

요약
R행 C열 격자에서 빙판 칸을 최소 개수만큼 마른 땅으로 바꿔, 어느 칸에서 출발하든 미끄러지며 모든 칸을 방문할 수 있게 하는 개수를 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 행렬, 구현
정답자
아직 제출이 없습니다

문제

RR행 CC열로 이루어진 격자판이 주어진다. 각 칸은 마른 땅('#') 또는 얼음 땅('.')이다. 북, 남, 동, 서 네 방향 중 한 방향으로 이동할 수 있다.

마른 땅 위에서는 걷거나 멈춰 서도 아무 문제가 없다. 얼음 땅은 매우 미끄럽다. 칸 (r,c)(r, c)에 서서 방향을 정하면, 마른 땅이나 격자판의 가장자리에 닿을 때까지 그 방향으로 계속 미끄러진다.

예를 들어 6행 7열의 다음 격자판을 보자.

#......
.#.....
..##...
..##...
.......
.#.....
  • (1, 3)에서 남쪽으로 가면 (3, 3)에 도착한다.
  • (4, 4)에서 북쪽으로 가면 (3, 4)에 도착한다.
  • (1, 1)에서 동쪽으로 가면 (1, 7)에 도착한다.
  • (6, 5)에서 서쪽으로 가면 (6, 2)에 도착한다.

(3, 7)에서 출발해 서, 서, 서, 남, 동, 북, 서, 서 순서로 움직이면 위치는 (3, 7), (3, 4), (3, 3), (3, 1), (6, 1), (6, 2), (2, 2), (2, 1), (2, 1)이 된다. 서로 다른 칸 8개를 방문한 것이다. (2, 1)은 두 번 방문했다. 미끄러지면서 지나가기만 한 칸은 방문으로 세지 않는다. 예를 들어 (3, 1)에서 남쪽으로 가면 (4, 1)과 (5, 1)을 지나지만, 그 이동에서 방문한 칸은 (3, 1)과 (6, 1)뿐이다.

얼음 땅 칸은 마른 땅으로 바꿀 수 있다. 시작 위치를 미리 알 수 없어도, 어디서 출발하든 모든 칸을 방문할 수 있어야 한다. 이를 보장하기 위해 바꿔야 하는 칸의 최소 개수를 구하라.

입력

첫 줄에 두 정수 RR과 CC (1≤R,C≤5001 \le R, C \le 500)가 주어진다. 이어서 RR개의 줄에 각각 CC개의 문자가 주어진다. 각 문자는 마른 땅 '#' 또는 얼음 땅 '.'이다.

출력

시작 위치와 관계없이 모든 칸을 방문할 수 있도록 바꿔야 하는 얼음 땅의 최소 개수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4 4
    ....
    .###
    ##..
    ###.
    
    예상 출력
    1