만드는 중입니다

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

수영장 사장님

면접 대비

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

요약
N×M 격자의 각 칸 높이가 주어질 때, 물이 빠져나가는 경로에서 만나는 최대 높이의 최솟값을 물 높이로 보고 지형이 가둘 수 있는 물의 총량을 구한다.
난이도

보통10점 중 6점

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

문제

수형이는 수영장 사업을 시작하려고 한다. 산의 자연을 훼손하지 않고 지형을 그대로 쓰기로 했으므로, 땅을 깎거나 쌓지 않고 물이 고이는 자리에만 물을 채운다.

땅은 N×MN \times M 격자로 주어지고, 각 칸에는 그 자리의 땅 높이가 적혀 있다. 물은 변을 맞대고 있는 칸으로 흐르며, 격자 바깥으로 흘러나간 물은 고이지 않는다. 물을 최대한 채웠을 때 한 칸의 수면 높이는 이렇게 정해진다. 그 칸에서 출발해 격자 바깥으로 나가는 경로를 하나 고른 뒤 그 경로가 지나는 칸의 높이 중 최댓값을 구하고, 가능한 모든 경로에서 얻은 최댓값 가운데 가장 작은 값이 그 칸의 수면 높이이다. 그 칸에 고이는 물의 양은 수면 높이에서 땅 높이를 뺀 값이다.

땅의 정보가 주어졌을 때, 물을 최대한 채웠을 때 고이는 물의 양을 모두 더해 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 NN과 MM이 공백으로 구분되어 주어진다. (1≤N,M≤1001 \le N, M \le 100)

다음 NN개의 줄에는 줄마다 MM개의 정수가 공백으로 구분되어 주어진다. ii번째 줄의 jj번째 정수 Hi,jH_{i,j}는 그 칸의 땅 높이이다. (0≤Hi,j≤100000 \le H_{i,j} \le 10000)

출력

첫째 줄에 고일 수 있는 물의 양을 출력한다.

예제3

  1. 예제 1

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

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

    입력
    3 3
    10 10 10
    10 0 10
    10 10 10
    
    예상 출력
    10