6506 - 山峰和山谷
时间限制 : 1 秒
内存限制 : 128 MB
FGD小朋友特别喜欢爬山,在爬山的时候他就在研究山峰和山谷。为了能够对旅程有一个安排,他想知道山峰和山谷的数量。给定一张地图,为FGD想要旅行的区域,地图被分为n*n的网格,每个格子(i,j)的高度w(i,j)是给定的。若两个格子有公共顶点,那么它们就是相邻的格子,如与(i,j)相邻的格子有(o-1,j-1),(i-1,j),(i-1,j+1),(i,j-1),(i,j+1),(i+1,j-1),(i+1,j),(i+1,j+1)。
我们定义一个格子的集合S为山峰(山谷)当且仅当:
(1)S所有的格子都有相同的高度。
(2)S的所有格子都连通。
(3)对于s属于S,与s相邻的s’不属于S,都有ws>ws’(山峰),或者ws<ws’(山谷)。你的任务是,对于给定的地图,求出山峰和山谷的数量,如果所有格子都有相同的高度,那么整这个地图既是山峰,又是山谷。
输入
第一行包含一个正整数n,表示地图的大小(1≤n≤1000)。接下来一个n*n的矩阵,表示地图上每个格子的高度。(0≤w≤1000000000)
输出
应包含两个数,分别表示山峰和山谷的数量。
样例
输入
5 8 8 8 7 7 7 7 8 8 7 7 7 7 7 7 7 8 8 7 8 7 8 8 7 8 7 8 8 8 8
输出
2 1
输入
5 5 7 8 3 1 5 5 7 6 6 6 6 6 2 8 5 7 2 5 8 7 1 2 1 7
输出
3 3
来源
一本通