10853. Водостоки
Карту місцевості умовно розбили на квадрати, і порахували середню висоту над рівнем моря кожному за квадрата.
Коли йде дощ, вода поступово випадає на всі квадрати. Якщо один із чотирьох сусідніх з цим квадратом квадратів має меншу висоту над рівнем моря, то вода з поточного квадрата стікає туди (і, якщо є можливість, то далі), якщо всі сусідні квадрати мають велику висоту, то вода накопичується в цьому квадраті.
Дозволяється в деяких квадратах збудувати водостоки. Коли на якомусь квадраті будують водостік, то вся вода, яка раніше накопичувалася в цьому квадраті, витікатиме у водостік.
Якщо є група квадратів, що мають однакову висоту і утворюють зв'язну область, то якщо хоча б поряд з одним із цих квадратів є квадрат, що має меншу висоту, то вся вода витікає туди, якщо такого квадрата немає, то вода стоїть у всіх цих квадратах. При цьому достатньо побудувати водостік у будь-якому з цих квадратів, і вся вода з них витікатиме в цей водостік.
Потрібно визначити, яку мінімальну кількість водостіків потрібно збудувати, щоб після дощу вся вода витікала у водостіки.
Формат вхідних даних
У вхідному потоці записані спочатку числа \(N\) і \(M\), що задають розміри карти - натуральні числа, що не перевищують 100.
Далі йде \(N\) рядків, по \(M\) чисел у кожному, що задають висоту квадратів карти над рівнем моря. Висота визначається натуральним числом, що не перевищує 10000. Вважається, що квадрати, розташовані за межами карти, мають висоту 10001 (тобто вода ніколи не витікає за межі карти).
Формат вихідних даних
У вихідний потік виведіть мінімальну кількість водостоків, яку необхідно побудувати.
Приклад вхідних даних
4 4
1 2 4 1
2 4 4 4
1 4 3 2
1 2 3 2
Приклад вихідних даних
4
Коментарі