P1506 拯救oibh总部---洪水填充问题(bfs解)

思路:因为中间部分如果是没被覆盖的,就是周围一定有****,这说明这个点一定与边界连不上,反过来想,从两边向中间延申(如果是0的话),这样被填充的部分就是被淹没的部分

// Problem: 
//     P1506 拯救oibh总部
//   
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1506
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include<iostream>
#include<queue>
using namespace std;
const int N=1005;
char a[N][N];
bool vis[N][N];
int n,m;
int ans;
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};void bfs(int xx,int yy){queue<pair<int,int>> q;q.push({xx,yy});vis[xx][yy]=1;//这里不要忘了把这个本身也赋值1,与他的兄弟题不大相同,因为边界也不能要while(q.size()){auto t=q.front();q.pop();for(int i=0;i<4;++i){int x=t.first+dx[i],y=t.second+dy[i];if(x<=n&&x>=1&&y<=m&&y>=1&&!vis[x][y]) vis[x][y]=1,q.push({x,y});}}
}int main(){cin>>n>>m;for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){cin>>a[i][j];if(a[i][j]=='*') vis[i][j]=1;}}for(int i=1;i<=n;i+=(n-1)){for(int j=1;j<=m;++j){if(!vis[i][j]) bfs(i,j);}}	for(int i=1;i<=n;i++){for(int j=1;j<=m;j+=(m-1)){if(!vis[i][j]) bfs(i,j);//两个边界分别枚举bfs}}	for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){if(!vis[i][j]) ans++;//统计剩下的0}}cout<<ans<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACP科普:敏捷开发之kanban

Q1: Kanban是什么&#xff1f; A1:敏捷开发中的Kanban是一种项目管理方法&#xff0c;其核心理念是通过可视化管理来提高生产效率和任务交付速度。Kanban来自日本&#xff0c;意为“看板”&#xff0c;最初是由丰田汽车公司引入生产线上的生产控制系统&#xff0c;后来被引入到…

Golang快速入门到实践学习笔记

Go学习笔记 1.基础 Go程序设计的一些规则 Go之所以会那么简洁&#xff0c;是因为它有一些默认的行为&#xff1a; 大写字母开头的变量是可导出的&#xff0c;也就是其它包可以读取 的&#xff0c;是公用变量&#xff1b;小写字母开头的就是不可导出的&#xff0c;是私有变量…

寒假学习记录11:grid布局

1. display:grid 2. grid-template-columns: 100px 100px 100px //指定每列的宽度 grid-template-rows: 100px 100px 100px //指定每行的宽度 3. column-gap: 24px //列间距 row-gap: 24px //行间距 gap: 24px //都设置 4.grid-template-areas用法 <!DO…

git错误整理

remote: Support for password authentication was removed on August 13, 2021. 参考&#xff1a;这篇即可 GnuTLS recv error (-110): The TLS connection was non-properly terminated. 执行下面的指令&#xff1a; git config --global http.sslVerify false

14.如果new一个箭头函数的会怎么样

箭头函数是ES6中的提出来的&#xff0c;它没有prototype&#xff0c;也没有自己的this指向&#xff0c;更不可以使用arguments参数&#xff0c;所以不能New一个箭头函数。 new操作符的实现步骤如下&#xff1a; 创建一个对象将构造函数的作用域赋给新对象&#xff08;也就是将…

蓝桥杯:日期统计讲解(C++)

日期统计 本题来自于&#xff1a;2023年十四届省赛大学B组真题 主要考察&#xff1a;暴力。 代码放在下面&#xff0c;代码中重要的细节全都写了注释&#xff0c;非常清晰明了&#xff1a; #include <bits/stdc.h> //万能头文件 using namespace std;int main() {…

计算机组成原理 2 数据表示

机器数 研究机器内的数据表示&#xff0c;目的在于组织数据&#xff0c;方便计算机硬件直接使用。 需要考虑&#xff1a; 支持的数据类型&#xff1b; 能表示的数据精度&#xff1b; 是否有利于软件的移植 能表示的数据范围&#xff1b; 存储和处理的代价&#xff1b; ... 真值…

【广度优先遍历】310. 最小高度树

310. 最小高度树 解题思路 首先&#xff0c;在方法的开头&#xff0c;创建了一个空的列表res&#xff0c;用于存储最小高度树的根节点。 接着&#xff0c;通过条件判断&#xff0c;检查如果图中只有一个节点&#xff08;即n 1&#xff09;&#xff0c;则将该节点添加到结果列…

PHP开发日志 ━━ 深入理解三元操作与一般条件语句的不同

概况 三元运算符的功能与“if…else”流程语句一致。 在一般情况下&#xff0c;三元操作替换if条件语句可以精简代码&#xff0c;并且更为直观&#xff0c;但是在下面的情况中使用三元操作将会返回警告。 借图&#xff1a; 案例 比如原代码&#xff1a; class classA{publ…

DS:树及二叉树的相关概念

创作不易&#xff0c;兄弟们来波三连吧&#xff01;&#xff01; 一、树的概念及结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c…

P7710 [Ynoi2077] stdmxeypz 题解

题目传送门 前言 subtree distance mod x equal y plus z 思路 题面中有取模&#xff0c;题面中有取模&#xff0c;题面中有取模&#xff01;直接上根号分治。 由于题面中是对子树查询&#xff0c;考虑把子树拍到 dfs 序上的区间做。 而点 a a a 子树中的一个点 b b b 到…

Java并发基础:ConcurrentLinkedDeque全面解析!

内容概要 ConcurrentLinkedDeque类提供了线程安全的双端队列操作&#xff0c;支持高效的并发访问&#xff0c;因此在多线程环境下&#xff0c;可以放心地在队列的两端添加或移除元素&#xff0c;而不用担心数据的一致性问题。同时&#xff0c;它的内部实现采用了无锁算法&…

概率论-随机变量

更多AI技术入门知识与工具使用请看下面链接&#xff1a; https://student-api.iyincaishijiao.com/t/iNSVmUE8/

二叉树-------前,中,后序遍历 + 前,中,后序查找+删除节点 (java详解)

目录 提要&#xff1a; 创建一个简单的二叉树&#xff1a; 二叉树的前中后序遍历&#xff1a; 二叉树的前序遍历&#xff1a; 二叉树的中序遍历&#xff1a; 二叉树的后续遍历&#xff1a; 小结&#xff1a; 二叉树的前中后续查找&#xff1a; 二叉树的前序查找&#…

MySQL表的增删查改(基础)

新增&#xff08;Create) 1.全列插入 全列单行插入 insert into 表名 values(值&#xff0c;值……)&#xff1b; 也可以全列且多行插入 insert into 表名 values (值&#xff0c;值……)&#xff0c;(值&#xff0c;值……)……&#xff1b; 2.指定列插入 insert into 表…

【JAVA WEB】JavaScript--函数 作用域 对象

目录 函数 语法格式 示例 定义没有参数列表&#xff0c;也没有返回值的一个函数 定义一个有参数列表 &#xff0c;有返回值的函数 关于参数个数 函数表达式 作用域 作用域链 对象 基本概念 创建对象 1.使用 字面量 创建对象 2.使用new Object()创建对象 3.使…

【教程】MySQL数据库学习笔记(二)——数据类型(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 文章目录 【MySQL数据库学习】系列文章一、整…

Ps:创建联系表

Ps菜单&#xff1a;文件/自动/联系表 II Automate/Contact sheet II Photoshop 的“联系表 II” Contact Sheet II命令为快速生成图像集合的预览和打印目录提供了一种高效的方法。 此命令可以通过自动化过程读取指定的图像文件&#xff0c;然后根据用户定义的参数&#xff08;如…

初识webpack(二)解析resolve、插件plugins、dev-server

目录 (一)webpack的解析(resolve) 1.resovle.alias 2.resolve.extensions 3.resolve.mainFiles (二) plugin插件 1.CleanWebpackPlugin 2.HtmlWebpackPlugin 3.DefinePlugin (三)webpack-dev-server 1.开启本地服务器 2.HMR模块热替换 3.devServer的更多配置项 (…

很在意别人的看法,怎么办?

如果把我们每天的幸福和烦恼列出来&#xff0c;你也许会发现一件有趣的事情&#xff1a; 带给我们幸福感的&#xff0c;往往是别人的感谢、鼓励和肯定。它们会带给你许多动力&#xff0c;让你一整天都充满激情。 反过来&#xff0c;带给我们烦恼的&#xff0c;大多数来源于什么…