P3456 [POI2007]GRZ-Ridges and Valleys

八个方向都跑一遍bfs,顺便判断一下是山峰还是山谷,或者是山坡(俩都不是)

(实在不知道要说啥了qwq)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#include<queue>
using namespace std;
inline int Int(){char c=getchar(); int x=0;while(!isdigit(c)) c=getchar();while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();return x;
}
int d1[8]={0,1,0,-1,1,1,-1,-1};
int d2[8]={1,0,-1,0,1,-1,1,-1};
int n,a[1002][1002],ridge,valley;
bool vis[1002][1002];
struct data{int x,y;};
inline void bfs(data f){queue <data> h; h.push(f);int p=-1; vis[f.x][f.y]=1; //p:该处的状态while(!h.empty()){data u=h.front(); h.pop();for(int i=0;i<8;++i){int r1=u.x+d1[i],r2=u.y+d2[i];if(r1<1||r1>n||r2<1||r2>n) continue;if(a[u.x][u.y]!=a[r1][r2]){if(p==-1) p=(a[u.x][u.y]>a[r1][r2]);else p= p==(a[u.x][u.y]>a[r1][r2]) ? p:2;continue; //直接写成这样方便(逃}if(!vis[r1][r2]) vis[r1][r2]=1; //标记记得打else continue;h.push((data){r1,r2});}}if(p==-1) ++ridge,++valley; //整个图都是一块相同海拔的else if(p==0) ++valley;else if(p==1) ++ridge;
}
int main(){n=Int();for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)a[i][j]=Int();for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)if(!vis[i][j])bfs((data){i,j});printf("%d %d",ridge,valley);return 0;
}

转载于:https://www.cnblogs.com/kafuuchino/p/9588545.html

P3456 [POI2007]GRZ-Ridges and Valleys(bfs)相关推荐

  1. python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...

    Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper) BFS入门详解:Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tre ...

  2. 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)

    一.图的基本介绍 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图. 图的举例 ...

  3. Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)

    对算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)用Java实现其中的伪代码算法,案例也采用算法导论中的图. import java.util.ArrayList; import java ...

  4. 【洛谷】马的遍历--广度优先搜索(BFS)

    题目描述 传送门:https://www.luogu.com.cn/problem/P1443 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意 ...

  5. 二叉搜索树(BFS)总结

    满二叉树 定义:高度为h,并且由2{h} –1个结点的二叉树,被称为满二叉树. 完全二叉树 定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上.这样的二叉 ...

  6. 广度优先搜索(BFS)与深度优先搜索(DFS)

    一.广度优先搜索(BFS) 1.二叉树代码 # 实现一个二叉树 class TreeNode:def __init__(self, x):self.val = xself.left = Nonesel ...

  7. 二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)

    二叉树的深度优先遍历(DFS)与广度优先遍历(BFS) 深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止.然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点 ...

  8. 层层递进——宽度优先搜索(BFS)

    问题引入 我们接着上次"解救小哈"的问题继续探索,不过这次是用宽度优先搜索(BFS). 注:问题来源可以点击这里 http://www.cnblogs.com/OctoptusLi ...

  9. 从起始点到目标点的最短步数(BFS)

    从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在古老的魔兽传说中,有两个军团,一 ...

  10. 队列的JS实现及广度优先搜索(BFS)的实现

    队列是先进先出(FIFO)的数据结构,插入操作叫做入队,只能添加在队列的末尾:删除操作叫做出队,只能移除第一个元素.在JS中,用数组可以很简单的实现队列. function Queue () {thi ...

最新文章

  1. 分享一个针对触摸设备优化的图片幻灯jQuery插件 - touchtouch
  2. ks检验正态分布结果_统计学里的数据正态性检验
  3. 【数据分析实例】1000 万条淘宝用户行为数据实时分析
  4. Docker-操作容器1
  5. java 参数命名冲突_Java中的命名参数
  6. scp和ssh如何连接指定端口的远程主机
  7. FreeSql (八)插入数据时指定列
  8. BI报表分析和数据可视化,推荐这三个开源工具!
  9. 积分图像追踪目标 (一)
  10. 说透Applet的数字签名之2——数字签名
  11. 网络赚钱,粉丝不是越多越好
  12. SQL Server中并行执行计划的基础
  13. HttpClient实现通过url下载文件
  14. python编程入门视频-2020年5个经典python编程入门视频教程推荐学习
  15. springboot学习笔记-3 整合redismongodb
  16. 经典的同态滤波算法的优化及其应用参数配置
  17. 中国 AI 天才养成计划:清华姚班和 100 个「张小龙」
  18. ubuntu16.04安装网易云音乐
  19. Windows搭建Sosoapi
  20. 中国微型连接器市场趋势报告、技术动态创新及市场预测

热门文章

  1. 新网站做SEO最适合做哪些外链
  2. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
  3. 最近学习金融知识的感悟
  4. Java 判断是否为大写字母
  5. KK 的99 条额外的建议[翻译]#yyds干货盘点#
  6. WPS word编辑图表数据的正确姿态
  7. Hudi-通过Hive查询hudi表数据
  8. java 碳架山地车寿命_关于自行车的4大“谣言” 铝合金车架寿命只有五年
  9. 超低功耗CMOS 16Mbit SRAM
  10. word中mathtype找不到OMML2MML文件