만드는 중입니다

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

브루클린 산책

시간 제한2초메모리 제한1024 MB

요약
북쪽 가장자리에서 남쪽 가장자리까지 집 경계를 따라 걷는 경로를 골라, 격자를 나눈 두 부분 넓이의 차를 최소로 만드는 값을 구합니다.
난이도

어려움10점 중 9점

유형
그래프, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

마일스 모랄레스가 브루클린을 걷고 있다. 하늘에서 내려다보면 브루클린은 세로 변이 남북 방향과 평행한 n×mn \times m 격자 들판처럼 보인다. 들판의 각 칸은 어느 한 집에 속한다. 집은 변을 공유하며 연결된 칸들의 영역이다. 들판의 경계 위에 있거나 서로 다른 두 집 사이에 있는 모든 단위 선분은 도로이다. 마일스는 브루클린 북쪽 경계에서 산책을 시작한다. 그는 서쪽, 동쪽, 또는 남쪽 도로를 따라 움직인다. 방향이 반대여도 같은 도로를 두 번 지나지 않는다. 브루클린 남쪽 경계에 도착할 때까지 계속 걷는다. 마일스의 경로는 브루클린을 경로 동쪽 부분과 서쪽 부분으로 나눈다. 마일스는 두 부분 넓이 차이의 최솟값이 궁금하다. 이 질문에 답을 구하라.

입력

첫 줄에 들판의 크기를 나타내는 두 정수 nn과 mm이 주어진다 (1≤n,m≤3001 \le n, m \le 300).

다음 nn개 줄에는 각각 mm개의 대문자 라틴 문자가 주어지며, 브루클린을 나타낸다. 변을 공유하며 연결된 같은 글자의 칸들이 하나의 집이다.

출력

마일스의 경로가 브루클린을 나누는 두 부분 넓이 차이의 최솟값을 한 줄에 정수로 출력한다.

힌트

첫 번째 테스트의 그림이다. 집은 색이 다른 도형이고, 도로는 검은 선분이다. 마일스가 가능한 경로는 빨간 점선으로 그려져 있다.

두 번째 테스트의 그림이다.

예제2

  1. 예제 1

    입력
    3 3
    ABB
    BAB
    AAB
    
    예상 출력
    1
    
  2. 예제 2

    입력
    2 3
    AAA
    BBB
    
    예상 출력
    0