链接
题目描述
给定一个 n*n 的网格状地图,每个方格 (i,j) 有一个高度 w i , j w_{i,j} wi,j 。如果两个方格有公共顶点,则它们是相邻的。
定义山峰山谷如下:
均由地图上的一个联通块组成。
所有方格高度都相同。
周围的方格(即不属于山峰或山谷但与山峰或山谷相邻的格子)高度均大于山谷的高度,或小于山峰的高度。
求地图内山峰和山谷的数量。特别的,如果整个地图方格的高度均相同,则整个地图即是一个山谷,也是一个山峰。
有与 (x,y) 有公共顶点的点集是(x,y) 的八连通,直播时口误
样例输入
5
8 8 8 7 7
7 7 8 8 7
7 7 7 7 7
7 8 8 7 8
7 8 8 8 8
样例输出
2 1
思路
每次找一个新的没访问过的点,然后和相邻的点去进行高度的对比,
1.如果当前连通块的高度比找到的这个点的高度大,那就是山峰
2.如果小,那就是山谷
3.如果有大有小,那就啥也不是
4.如果最后找完了, 都没有大小关系,那就既是山谷,又是山峰
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int n, flag1, flag2, ans1, ans2;
int w[1005][1005], vis[1005