만드는 중입니다

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

중립 지대

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

요약
A와 B 병력이 놓인 격자에서 빈 칸마다 드는 비용을 고려해, 두 왕국이 연결되지 않도록 막는 최소 비용을 구합니다.
난이도

보통10점 중 6점

유형
그래프, BFS
정답자
아직 제출이 없습니다

문제

두 왕국은 오랫동안 전쟁을 벌였고, 결국 황제가 나서서 분쟁을 끝내려 했다. 분쟁 지역은 M×NM \times N 크기의 직사각형 격자이다. 황제의 요구에 따라 두 왕은 한쪽 왕국의 병사가 다른 왕국의 병사와 상하좌우로 인접한 칸에 서지 않도록 병력을 물렸다. 대각선은 인접으로 보지 않는다.

황제는 지도의 일부 칸을 중립 지대로 지정하자고 제안한다. 두 왕은 그 칸에 병사를 들일 수 없고, 황제의 병력이 그곳을 순찰하며 두 왕이 규칙을 지키는지 감시한다.

황제는 검소해서 꼭 필요한 만큼만 병력을 투입하려 한다. 장군들은 각 칸을 확보하는 데 필요한 병사 수를 칸마다 표시해 두었다. 남은 일은 어느 칸을 순찰할지 고르는 것이다.

한쪽 왕국의 병사가 상하좌우로 한 번 이상 움직여 다른 왕국의 병사가 있는 칸에 황제의 병력과 마주치지 않고 도달하지 못하도록, 황제가 배치해야 할 병사의 최소 수를 구하는 프로그램을 작성하라.

입력

첫 줄에는 지도의 너비 ww와 높이 hh를 나타내는 정수 두 개가 주어진다. 단, 1≤w,h≤401 \leq w, h \leq 40이다. 이어지는 hh개의 줄에는 왼쪽부터 ww개의 문자가 적혀 있다. 각 문자는 다음 중 하나이다. 'A' 또는 'B'는 해당 왕의 병사가 있는 칸이다. 숫자 한 자리는 비어 있는 칸이며, 그 수만큼의 병사를 배치하면 확보할 수 있는 칸이다. 예를 들어 '2'는 그 칸을 막으려면 병사 두 명을 배치해야 한다는 뜻이다. '0'은 통과할 수 없는 지형이다. 병사가 지나갈 수 없으므로 황제는 그곳에 병사를 배치할 필요가 없다.

'A' 칸과 'B' 칸은 상하좌우로 인접하지 않는다. 입력에는 'A'와 'B'가 각각 하나 이상 있다.

출력

상하좌우로만 이동해서 어떤 'A' 칸에서도 'B' 칸으로 열린 경로가 없도록 보장하는 데 필요한, 황제가 배치해야 할 병사의 최소 수를 한 줄에 정수로 출력한다.

예제2

  1. 예제 1

    입력
    8 5
    A11111AA
    AA7B111A
    111BB111
    11BBB111
    11BBB11B
    
    예상 출력
    13
    
  2. 예제 2

    입력
    25 6
    A211111321231111111111111
    2A2111110001111111BB11111
    AA211111000111111BBBB1111
    A2111114111411111BBBB1111
    AA2111110001111111BB11111
    AA21111110111111111111111
    
    예상 출력
    2