타일 평탄화
시간 제한5초메모리 제한512 MB
높이가 적힌 격자가 주어지고, 충격 하나가 한 타일과 같은 높이로 연결된 모든 타일을 1씩 낮출 때, 모든 타일의 높이를 같게 만드는 최소 충격 횟수를 구한다.
문제
미르코의 땅은 미터 크기이고, 미터짜리 타일 개로 덮여 있다. 땅이 울퉁불퉁해서 타일마다 높이가 다르며, 높이는 센티미터 단위로 주어진다.
변을 맞대고 있는 두 타일을 이웃한 타일이라고 한다. 한 타일과 이웃한 타일은 많아야 네 개다. 높이가 같은 이웃 타일로만 옮겨 가면서 한 타일에서 다른 타일까지 갈 수 있으면 두 타일이 서로 연결되어 있다고 한다.
폭풍이 몰아치면서 미르코의 땅에 커다란 얼음덩어리가 떨어지기 시작했다. 얼음덩어리가 어떤 타일 위로 떨어지면 그 충격으로 타일이 1센티미터 내려가고, 그 타일과 연결된 모든 타일도 함께 1센티미터 내려간다.
모든 타일의 높이가 같아지려면 얼음덩어리가 최소 몇 개 떨어져야 하는지 구하시오. 얼음덩어리는 서로 다른 순간에 하나씩 떨어지고, 한 번에 타일 하나 위에만 떨어진다.
입력
첫째 줄에 땅의 크기를 나타내는 자연수 과 가 주어진다. ()
다음 개 줄에는 각각 개의 자연수가 주어지며, 이는 해당 타일의 높이를 센티미터 단위로 나타낸다. 높이는 이상 이하이다.
출력
모든 타일의 높이가 같아지는 데 필요한 얼음덩어리의 최소 개수를 출력한다.
힌트
첫 번째 예제에서 가운데 타일에 얼음덩어리가 떨어지면 마지막 타일을 제외한 모든 타일의 높이가 2가 된다. 가운데 타일에 얼음덩어리가 한 번 더 떨어지면 모든 타일의 높이가 1이 된다.