타일 평탄화

높이가 적힌 격자가 주어지고, 충격 하나가 한 타일과 같은 높이로 연결된 모든 타일을 1씩 낮출 때, 모든 타일의 높이를 같게 만드는 최소 충격 횟수를 구한다.

보통6그래프BFSDFS그리디아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

미르코의 땅은 R×SR \times S미터 크기이고, 1×11 \times 1미터짜리 타일 R×SR \times S개로 덮여 있다. 땅이 울퉁불퉁해서 타일마다 높이가 다르며, 높이는 센티미터 단위로 주어진다.

변을 맞대고 있는 두 타일을 이웃한 타일이라고 한다. 한 타일과 이웃한 타일은 많아야 네 개다. 높이가 같은 이웃 타일로만 옮겨 가면서 한 타일에서 다른 타일까지 갈 수 있으면 두 타일이 서로 연결되어 있다고 한다.

폭풍이 몰아치면서 미르코의 땅에 커다란 얼음덩어리가 떨어지기 시작했다. 얼음덩어리가 어떤 타일 위로 떨어지면 그 충격으로 타일이 1센티미터 내려가고, 그 타일과 연결된 모든 타일도 함께 1센티미터 내려간다.

모든 타일의 높이가 같아지려면 얼음덩어리가 최소 몇 개 떨어져야 하는지 구하시오. 얼음덩어리는 서로 다른 순간에 하나씩 떨어지고, 한 번에 타일 하나 위에만 떨어진다.

입력

첫째 줄에 땅의 크기를 나타내는 자연수 RRSS가 주어진다. (2R,S10002 \le R, S \le 1000)

다음 RR개 줄에는 각각 SS개의 자연수가 주어지며, 이는 해당 타일의 높이를 센티미터 단위로 나타낸다. 높이는 11 이상 10910^9 이하이다.

출력

모든 타일의 높이가 같아지는 데 필요한 얼음덩어리의 최소 개수를 출력한다.

힌트

첫 번째 예제에서 가운데 타일에 얼음덩어리가 떨어지면 마지막 타일을 제외한 모든 타일의 높이가 2가 된다. 가운데 타일에 얼음덩어리가 한 번 더 떨어지면 모든 타일의 높이가 1이 된다.