수영장 사장님

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

보통6그래프BFS구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한128 MB

문제

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

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

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

입력

첫째 줄에 NNMM이 공백으로 구분되어 주어진다. (1N,M1001 \le N, M \le 100)

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

출력

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