#395. 农场被淹没
农场被淹没
【问题描述】
一场暴雨过后,Farmer John 所在的区域被淹没了。
John 所在的区域是一个盆地,我们可以把这块区域看作是一个 M×N 的网格图,每个格子都有一个海拔高度,网格图的外围是直入云峰的高山。John 的农场就位于其中的某些格子中,其他的格子则是荒地。
现在整个区域被淹没,即当前水平面位于所有格子的海拔高度以上。John 希望赶紧把所有农场中的水全部排走。排水机可以放置在网格图中的任意一个格子中,无论农场还是荒地。
下面是一个剖面图,你可以发挥你的空间想象能力,脑补一下这个盆地被淹没的情形。

问:John 最少需要放置多少台排水机可以把所有农场中的水全部排走?
注:水往低处流。一个格子的水只可能流向与其有公共边且不高于其高度的相邻格子中。排水机可以排走无穷多的水。
【输入格式】
第一行:两个整数 M, N
接下来是一个 M×N 的矩阵 A。|Aij| 表示第 i 行第 j 列格子的海拔高度。如果 Aij > 0,则表示该格子是 John 的一个农场,否则是一块荒地。注意:Aij 的符号仅用来区分农场和荒地,其绝对值才是海拔高度。
【输出格式】
一个整数,表示答案。
3 4
5 5 -1 5
-5 1 5 -6
-5 5 -1 1
2
【样例解释】
最少需要放置两台排水机,放置方案可能不唯一,以下是一种可行方案,其中黄色方格表示排水机放置位置:

【数据范围】
1 <= M, N <= 1000, |Aij| <= 1000
相关
在下列比赛中: