洛谷P1162 填涂颜色【bfs】
题目链接:https://www.luogu.org/problemnew/show/P1162
题意:
有一个0和1组成的矩阵,一些1组成一个闭合圈,圈住一些0,现在要把被圈住的这些0变成2输出。
思路:
bfs,判断每个0可以到达的边界。
如果这个0是可以到达矩阵的边界的说明没有被圈住。
bfs时不把1加入队列,如果最后也不能到达边界说明是被圈住的,变成2就行了。
#include<stdio.h>
#include<stdlib.h>
#include<map>
#include<set>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue> using namespace std; int n;
int mat[][];
typedef pair<int, int> pr;
int dx[] = {-, , , };
int dy[] = {, , -, };
bool vis[][]; bool check(int i, int j)
{
return (i >= && j >= && i < n && j < n);
} bool bfs(int i, int j)
{
memset(vis, , sizeof(vis));
queue<pr>que;
que.push(make_pair(i, j));
while(!que.empty()){
pr p = que.front();que.pop();
if(p.first == || p.first == n - || p.second == || p.second == n - )return false;
for(int k = ; k < ; k++){
int x = p.first + dx[k], y = p.second + dy[k];
if(check(x, y) && mat[x][y] != && !vis[x][y]){
que.push(make_pair(x, y));
vis[x][y] = true;
} }
}
return true;
} int main()
{
scanf("%d", &n);
for(int i = ; i < n; i++){
for(int j = ; j < n; j++){
scanf("%d", &mat[i][j]);
}
} for(int i = ; i < n; i++){
for(int j = ; j < n; j++){
if(mat[i][j] == ){
if(bfs(i, j)){
mat[i][j] = ;
}
}
}
} for(int i = ; i < n; i++){
printf("%d", mat[i][]);
for(int j = ; j < n; j++){
printf(" %d", mat[i][j]);
}
printf("\n");
}
return ;
}
洛谷P1162 填涂颜色【bfs】的更多相关文章
- 洛谷 P1162 填涂颜色 DFS
P1162 填涂颜色 https://www.luogu.com.cn/problem/P1162 qaq搜索好抽象啊,蒟蒻表示难以理解,搞半天才做出来一道题,很挫败www 思路 染色法.找墙壁外的连 ...
- 洛谷P1162—填涂颜色
这应该是是第一次记录洛谷题库里的题目吧: 题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \ ...
- 洛谷 P1162 填涂颜色
题目链接:https://www.luogu.org/problemnew/show/P1162 题目描述由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要 ...
- 洛谷 P1162 填涂颜色【DFS】
题目链接:https://www.luogu.org/problemnew/show/P1162 题目描述 由数字 0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 1 构成,围圈时只走上下左右 4 ...
- 洛谷—— P1162 填涂颜色
https://www.luogu.org/problem/show?pid=1162 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭 ...
- 洛谷 P1162 填涂颜色题解
题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=6) ...
- 洛谷P1162 填涂颜色
题目链接:https://www.luogu.org/problemnew/show/P1162 这道题是LITTLESUN写的第一道BFS哦! 对于这道题的的思路是把封闭图形外边的0标记一边,在最后 ...
- 洛谷 - P1162 - 填涂颜色 - 简单搜索
https://www.luogu.org/problemnew/show/P1162 在外面加一圈0把0连起来,然后把所有0换成2,再从(0,0)把连通的2全部改回来. 这也是一个判断内外圈的好办法 ...
- luogu P1162 填涂颜色 x
P1162 填涂颜色 题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭合圈内的所有空间都填写成2.例如:6X6的方阵(n=6),涂色前和 ...
随机推荐
- 我的第一个HTML5应用
直接贴代码: 源代码: <?xml version="1.0" encoding="UTF-8"?> <div xmlns="htt ...
- pycharm如何解决新建的文件没有后缀的问题
如下设置: 1.settings 2.file and code templates3.点击图中绿色的“+”号,即可打开新建模板页面4.定义模板名字.后缀名保存即可
- 迷你音乐播放器v1.0正式上线!
迷你音乐播放器V1.0正式上线! 版本介绍: 1.随机播放切换开关(通过点击专辑图片) 2.通过拖动歌曲名及艺术家名调整歌曲播放进度 3.手机浏览访问支持熄屏播放 4.暂不支持在线搜索功能 快来一起分 ...
- 预防 app crash 之 unrecognized selector
处理unrecognized selector异常原因 假如封装一个方法,在其他模块调用该方法时,传入参数不匹配则crash.比如下面的方法:本应该传入的参数类型为NSMutableArray,如果传 ...
- FTP上传、下载(简单小例子)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- mysql服务启动、停止、重启
如何启动/停止/重启MySQL 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint.d/mysqld sta ...
- zookeeper频繁异常问题分析
Reference: https://blog.csdn.net/xjping0794/article/details/77784171 1.1 操作系统信息1.1.1 ...
- 【测量实战技术】Cad中导入坐标高程点并可以提取坐标带高程
一般咱们都是导入cad的是坐标不带高程,那么怎么在cad中导入坐标高程的三维坐标呢,在不需要cass的情况下还能计算方量呢?而且还能批量提取出这些坐标高程的三维参数. 这些都是工作中非常常用的技能,不 ...
- 教你一招:更新/替换系统 hosts,轻松访问国外站点
更新 hosts 下面介绍的操作均可能覆盖现有 hosts ,进行操作前请先确认是否需要备份. 推荐使用本项目的 Host Tools 来自动化 备份/配置 工作. 若更新 hosts 未立即生效,请 ...
- html页面工具-htmlUnit
HtmlUnit测试工具的推出,创意非常好.是一款给java开发用的browser.说它是browser,其实它是对html建模并且提供API来访问页面,点击链接等等的java类库. 这样的测 ...