题目选自洛谷P1162

首先讲一下思路:根据题意,当找到第一个1时,其右下必然是圈内的0,那么只要从这个0开始广搜寻找联通块就可以了。(因为圈只有一个,那么当找到第一个1之后便要打断循环,很重要!)

题目描述

由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6×6的方阵(n=6),涂色前和涂色后的方阵如下:

0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 2 2 1
1 1 1 1 1 1

输入格式

每组测试数据第一行一个整数n(1≤n≤30)

接下来n行,由0和1组成的n×n的方阵。

方阵内只有一个闭合圈,圈内至少有一个0。

输出格式

已经填好数字2的完整方阵。

输入输出样例

输入 1

6
0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 0 0 1
1 1 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1

输出 1

0 0 0 0 0 0
0 0 1 1 1 1
0 1 1 2 2 1
1 1 2 2 2 1
1 2 2 2 2 1
1 1 1 1 1 1

说明/提示

1≤n≤30

解题代码:

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
int n,a[31][31];
int nt[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
struct dian{int xx,yy;
};
queue<dian> q;
void print(){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(j!=1) cout<<" ";cout<<a[i][j];}cout<<endl;}
}
void bfs(int x,int y){a[x][y] = 2;q.push(dian{x,y});int nx,ny;while(!q.empty()){dian ft = q.front();for(int i=0;i<4;i++){nx = ft.xx+nt[i][0];  ny = ft.yy+nt[i][1];if(nx>=1&&nx<=n&&ny>=1&&ny<=n &&a[nx][ny]==0){a[nx][ny] = 2;q.push(dian{nx,ny});}}q.pop();}
}
int main(){bool flag=false;cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){cin>>a[i][j];}int x=0,y=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(a[i][j]==1){x=i+1,y=j+1;flag=true;break;}}if(flag) break;}bfs(x,y);print();return 0;
}

广度优先搜索——填涂颜色(洛谷 P1162)相关推荐

  1. 广度优先搜索——奇怪的电梯(洛谷 P1135)

    广度优先搜索普及/提高篇,今天讲述的是洛谷里的一道题 奇怪的电梯(洛谷 P1135) 说一下我解题时候的思路吧. 首先读清楚题目,题目要求输出从 a楼 到 b楼的最少次数,楼层必须在[1,n]之间升降 ...

  2. 广度优先搜索——Corn Maze S(洛谷 P1825)

    题目选自洛谷P1825 题目比较长,但是不难理解.因为求的是一个最短距离,所以用BFS即可. 广搜的主要思想便是将所有可行解(可到达的点)放入队列,然后再一个个遍历所有可行解(可到达的点),知道找到终 ...

  3. 广度优先搜索——字串变换(洛谷 P1032)

    题目选自洛谷P1032 题意已经把做法写得特别露骨了...最小步数,最多6个变换规则....广搜自不必说,不仅可以寻找解而且还能判断步数(根据广搜首解最优的性质可以得到). 用queue来进行广搜,需 ...

  4. P1162 填图颜色 洛谷(BFS的简单应用)

    题目描述 由数字 0 0 0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 1 1 1 构成,围圈时只走上下左右 4 4 4 个方向.现要求把闭合圈内的所有空间都填写成 2 2 2.例如: 6 × ...

  5. 洛谷P1162 填涂颜色(Python搜索)

    P1162 填涂颜色https://www.luogu.com.cn/problem/P1162 题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方 ...

  6. P1162 填涂颜色问题(广度优先搜索BFS)

    # 填涂颜色 ## 题目描述 由数字 $0$ 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 1 构成,围圈时只走上下左右 4 个方向.现要求把闭合圈内的所有空间都填写成 2.例如:6*6$的方阵(n ...

  7. 洛谷 P1162 填涂颜色

    填涂颜色 题目描述 由数字 000 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 111 构成,围圈时只走上下左右 444 个方向.现要求把闭合圈内的所有空间都填写成 222.例如:6×66\tim ...

  8. 洛谷 P1162填图颜色

    洛谷 P1162填图颜色 题目链接 #include <bits/stdc++.h> using namespace std; int xx[] = {0, -1, 0, 1}; int ...

  9. P1162 填涂颜色

    填涂颜色 题目描述 由数字 000 组成的方阵中,有一任意形状闭合圈,闭合圈由数字 111 构成,围圈时只走上下左右 444 个方向.现要求把闭合圈内的所有空间都填写成 222.例如:6×66\tim ...

最新文章

  1. spring 两次进入拦截器_Spring Boot+Redis 扛住,瞬间千次重复提交(实例)
  2. MySQL高可用之mysql-mmm环境搭建
  3. 满足人工智能日益增长的要求
  4. 神策数据荣获“年度最具影响力大数据服务厂商”奖项
  5. sqlplus几个存储过程执行变量值窜掉了_基于大数据的冷连轧过程控制优化技术研究...
  6. poi报空指针_POI 导出文件 报空指针异常 --Docker 中
  7. linux运行搜狗拼音,Linux 搜狗输入法的安装(Ubuntu版)
  8. 如何向女朋友解释什么是HTTP协议
  9. 常见的mysql权限设置
  10. mysql 导出所有表_Mysql导出(多张表)表结构及表数据 mysqldump用法
  11. c语言if全部用法,关于if的用法
  12. iOS报错:linker command failed with exit code 1 (use -v to see invocation) 问题解决方式之一
  13. python 乘法内置函数_Python内置函数--reversed()
  14. 全球移动支付发展现状移动支付之综述篇
  15. (转载)Linux上iptables防火墙的基本应用教程
  16. 史上最全正则表达式语法,文末附常用表达式!
  17. 手把手教你将小米手机刷机!
  18. 安装vs 2015 社区版
  19. hprose-php教程,Swoole学习笔记(六):Hprose入门
  20. SWFUpload文件上传

热门文章

  1. Windows 8连接*** 691错误解决办法
  2. linux中终止停止进程_如何在Linux中终止进程或停止程序
  3. 开源优势_企业开源的10大优势
  4. (12)H5新增语义化标签布局案例
  5. ES6中的常用知识点总结
  6. Bootstrap 打印机类
  7. Bootstrap CSS编码规范之选择器使用规范
  8. Vrep当中的一些好用的工具(未完)
  9. 卡尔曼滤波原理理解(1)
  10. ROS Rviz 显示超声波测量范围 Python