Примечание к задаче
Это задача на рекурсивный алгоритм. Хотя задача имеет большую вычислительную сложность, решение довольно компактное за счёт применения рекурсивной процедуры.
p – массив, высотой [n,m], по краям добавляем по ряду, поэтому [0..n+1, 0..m+1].
s – линейный массив 1+..n*m, если стока нет s=0, сток есть s=1.
а – массив меток, рассмотрели квадрат или нет. 0 – не смотрели, k – смотрели.
В рекурсивной процедуре onl просматриваем для каждой клетки наличие стоков во всех четырёх сторонах [x-1,y], [x+1,y], [x,y-1], [x,y+1]. Если уровень одинаков, то вызываем процедуру для соседней клетки.
Затем просматриваем массив s, считываем нули и выводим кол-во стоков