洛谷 1162_填涂颜色_bfs
来源:互联网 发布:黑蜂无人机淘宝 编辑:程序博客网 时间:2024/05/01 11:07
题目大意
将一个图中被“1”圈住的“0”填充为“2”,然后输出
思路
从每一条最外的边开始搜索,将全部在外围的0去掉,剩下的0就是2了
O(4*n^2)
#include <stdio.h>#include <queue>using namespace std;int a[31][31];int dx[5]={0,1,0,-1,0};int dy[5]={0,0,1,0,-1};int n;int bfs(int x,int y){ int head=0,tail=1; queue<int> tx; queue<int> ty; tx.push(x); ty.push(y); a[x][y]=3; while (!tx.empty()) { int xx=tx.front(),yy=ty.front(); tx.pop(); ty.pop(); for (int i=1;i<=4;i++) if (xx+dx[i]>=1&&xx+dx[i]<=n&&yy+dy[i]>=1&&yy+dy[i]<=n&&a[xx+dx[i]][yy+dy[i]]==0) { a[xx+dx[i]][yy+dy[i]]=3; tx.push(xx+dx[i]); ty.push(yy+dy[i]); } }}int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) scanf("%d",&a[i][j]); for (int i=1;i<=n;i++) if (a[1][i]==0) bfs(1,i); for (int i=1;i<=n;i++) if (a[i][1]==0) bfs(i,1); for (int i=1;i<=n;i++) if (a[n][i]==0) bfs(n,i); for (int i=1;i<=n;i++) if (a[i][n]==0) bfs(i,n); for (int i=1;i<=n;i++) { for (int j=1;j<=n;j++) if (a[i][j]==3) printf("0 "); else if (a[i][j]==1) printf("%d ",a[i][j]); else printf("2 "); printf("\n"); }}
1 0
- 洛谷 1162_填涂颜色_bfs
- 洛谷 1162 填涂颜色
- 填涂颜色-洛谷 1162
- 洛谷 1443_马的遍历_bfs
- 封锁阳光大学_洛谷1330_bfs
- 洛谷P1162 填涂颜色
- 洛谷 P1162 填涂颜色
- 洛谷P1162 填涂颜色
- 洛谷 P1162 填涂颜色
- 洛谷 P1162 填涂颜色
- 洛谷p1162 填涂颜色
- 洛谷OJ P1162填涂颜色
- 【搜索】洛谷 P1162 填涂颜色
- 洛谷 P1162 填涂颜色 kevin_xcw
- [luogu1162 填涂颜色]
- P1162 填涂颜色
- P1162 填涂颜色
- P1162 填涂颜色
- Java动态代理
- vim中的光标移动
- Design Tic-Tac-Toe
- Convention插件与"约定"支持
- CSS基础入门2
- 洛谷 1162_填涂颜色_bfs
- Android 网络防火墙的实现 Iptables解决方案
- C语言中的 static变量、static函数
- android studio 设置编码格式
- memcache的内存管理与删除机制
- day17 集合框架 LinkedHashSet TreeSet Map 泛型
- android 仿音悦台页面交互效果
- MYSQL优化之数据库结构优化-学习笔记(3)
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读