Byteotia 的首府 Byteburg 是一座坐落在群山环抱的山谷中的风景如画的城市。不幸的是,最近的强降雨引发了洪水,整个 Byteburg 现在完全被淹没在水下。Byteotia 的国王 Byteasar 召集了他最睿智的顾问(包括你)进行商议。经过长时间的讨论,委员会决定引入几台水泵,将它们安装在被淹没的区域,以排干 Byteburg 的积水。国王要求你确定排干整座城市所需的最少水泵数量。
你拥有该城市及其所在山谷的地图。地图是一个 $m \times n$ 的矩形,被划分为单位正方形。对于每个正方形,地图上都标明了其海拔高度,以及它是否属于 Byteburg。地图上描绘的整个区域都在水下。此外,该区域被更高的山脉环绕,使得水无法流出。显然,不需要排干不属于 Byteburg 的区域。
每台水泵可以放置在地图上的任何单位正方形中。水泵将持续抽水,直到其所在的正方形完全排干。当然,根据连通器原理,排干一个正方形会导致那些能够向装有水泵的正方形排水的区域水位下降或完全排干。水只能在有公共边的正方形之间流动(更准确地说,是投影在水平面上具有公共边的正方形,因为正方形可能处于不同的高度)。除此之外,水显然只能向下流动。
编写一个程序:
- 从标准输入读取地图描述,
- 确定排干整个 Byteburg 所需的最少水泵数量,
- 将结果输出到标准输出。
输入格式
标准输入的第一行包含两个整数 $m$ 和 $n$,由一个空格分隔,$1 \le n, m \le 1\,000$。接下来的 $m$ 行包含地图的描述。第 $(i+1)$ 行描述了地图中第 $i$ 行的单位正方形。它包含 $n$ 个整数 $x_{i,1}, x_{i,2}, \dots, x_{i,n}$,由空格分隔,$-1\,000 \le x_{i,j} \le 1\,000$,$x_{i,j} \neq 0$。数字 $x_{i,j}$ 描述了第 $i$ 行第 $j$ 列的正方形。该正方形的地面高度为 $|x_{i,j}|$。如果 $x_{i,j} > 0$,则该正方形属于 Byteburg,否则它在城市之外。注意,Byteburg 的区域不一定是连通的。事实上,城市可能由几个分离的部分组成。
输出格式
你的程序应向标准输出写入一个整数,即排干 Byteburg 所需的最少水泵数量。
样例
输入 1
6 9 -2 -2 -1 -1 -2 -2 -2 -12 -3 -2 1 -1 2 -8 -12 2 -12 -12 -5 3 1 1 -12 4 -6 2 -2 -5 -2 -2 2 -12 -3 4 -3 -1 -5 -6 -2 2 -12 5 6 2 -1 -4 -8 -8 -10 -12 -8 -6 -6 -4
输出 1
2
图中展示了 Byteburg 的区域以及两个水泵的示例设置。