洛谷P1451 求细胞数量
求细胞数量
题目链接
这道题大概是一个最简单的联通块的题了qwq
- 注意枚举起点的时候 一定不要从0开始不然你就会从0进入到了其他联通块中从而多查。
- 一定看清题意这道题不是同色为联通块!!!
AC代码如下:
其实里面联通块没有必要被涂成不同的颜色,所以也可以全部涂成一个颜色
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define MAXN 3000
#define MEXN 100010
using namespace std;
int G[MAXN][MAXN];
int done[MAXN][MAXN];
int color=1;
struct item
{
int x;
int y;
};
queue<item>q;
int m,n;
void bfs(item t)
{
q.push(t);
while(!q.empty()){
item r;
r=q.front();
// printf( "x: %d, y: %d\n", r.x, r.y );
// cout<<r.x<<endl;
// cout<<r.y<<endl;
q.pop();
if(done[r.x][r.y]!=0) continue;
done[r.x][r.y]=color;
if(G[r.x+1][r.y]!=0&&r.x+1<=m&&done[r.x+1][r.y]==0){
item t2;
t2.x=r.x+1;
t2.y=r.y;
q.push(t2);
}
if(G[r.x-1][r.y]!=0&&r.x-1>=1&&done[r.x-1][r.y]==0){
item t2;
t2.x=r.x-1;
t2.y=r.y;
q.push(t2);
}
if(G[r.x][r.y+1]!=0&&r.y+1<=n&&done[r.x][r.y+1]==0){
item t2;
t2.x=r.x;
t2.y=r.y+1;
q.push(t2);
}
if(G[r.x][r.y-1]!=0&&r.y-1>=1&&done[r.x][r.y-1]==0)
{
item t2;
t2.x=r.x;
t2.y=r.y-1;
q.push(t2);
}
}
}
int main()
{
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
char c;
scanf( " %c", &c );
// cin>>c;
G[i][j]=c-'0';
}
}
// for(int i=1;i<=m;i++)
// {
// for(int j=1;j<=n;j++)
// {
// printf("%d ",G[i][j]);
// }
// cout<<endl;
// }
int cnt=0;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
if(G[i][j]==0)continue;
item t;
t.x=i;
t.y=j;
if(done[i][j]==0)
{
cnt++;
color++;
bfs(t);
}
}
}
printf("%d",cnt);
return 0;
}
洛谷P1451 求细胞数量的更多相关文章
- 洛谷 P1451 求细胞数量
题目链接 https://www.luogu.org/problemnew/show/P1451 题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字 ...
- 【新知识】队列&bfs【洛谷p1996约瑟夫问题&洛谷p1451求细胞数量】
(是时候为五一培训准备真正的技术了qwq) part1 队列(FIFO) 算法简介: FIFO:First In First Out(先进先出) 队列是限定在一端进行插入,另一端进行删除的特殊线性表 ...
- 洛谷——P1451 求细胞数量
P1451 求细胞数量 题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=10 ...
- 【一本通1329:【例8.2】细胞&&洛谷P1451 求细胞数量】
1329:[例8.2]细胞 [题目描述] 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.如: 阵列 4 10 023 ...
- 【dfs】p1451 求细胞数量
题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式## ...
- Luogu P1451 求细胞数量
题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式 输 ...
- P1451 求细胞数量
题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入输出格式 输 ...
- P1451 求细胞数量(广搜)
题意:就是0把是所有细胞圈起来了.而被圈起来的是所有数字全部为一个细胞问有多少个这样的细胞.(mmp,我读半天题) 思路:广搜索.就是,0的话就不放入了,不为0的话,就进入队列,然后,再看它的4个方向 ...
- 洛谷1440 求m区间内的最小值
洛谷1440 求m区间内的最小值 本题地址:http://www.luogu.org/problem/show?pid=1440 题目描述 一个含有n项的数列(n<=2000000),求出每一项 ...
随机推荐
- lucene中文学习地址推荐
Lucene原理与代码分析http://www.cnblogs.com/forfuture1978/category/300665.html Lucene5.5学习(1)-初尝Lucene全文检索引擎 ...
- ssh代理登录内网服务器
服务器 192.168.48.81 # client 192.168.48.82 # bastion 192.168.48.83 # private password方式 192.168.48.81 ...
- pcp分布式监控工具
已经集成在redhat6.x版本里 http://pcp.io
- kubernetes组件helm
1.安装helm Helm由客户端helm命令行工具和服务端tiller组成,Helm的安装十分简单. 下载helm命令行工具到master节点node1的/usr/local/bin下(只需要在其中 ...
- org.apache.xmlbeans.XmlException: error: does not close tag
使用myeclipse的jax自动生成webservice , 或者serviceImpl通过@webservice来实现webservice时, 使用soap UI (我测试使用的版本 5.2.1) ...
- .net core 2.0 WIndows IIS下发布(WIN 10环境)
最近在做练习,发布.net core webapi在本机IIS上,使用.net core的文件系统发布到IIS后,出现错误 500.19 观察了下页面如下 查阅资料才知道是少安装了一个DotNetCo ...
- 其他信息: 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。在VS中的解决方法
第一种,不使用dataaccess,使用通用的Oracle.ManagedDataAccess,可以忽略版本问题 第二种,在属性——生成——web中iis express换成用本地IIS执行,但是这样 ...
- node执行环境
nodejs本质上是一个javascript的执行环境,只是由于他的封装,加上更多web底层的一个处理,赋予了更多的能力,那么执行环境到底是什么呢,我们到浏览器里面体验看看,在chrome里面控制台, ...
- 2017.10.6 Java命名规范及使用情况
Package 的命名 Package 的名字应该都是由一个小写单词组成. Class 的命名 Class 的名字必须由大写字母开头而其他字母都小写的单词组成 Class 变量的命名 变量的名字必须用 ...
- caffe中的sgd,与激活函数(activation function)
caffe中activation function的形式,直接决定了其训练速度以及SGD的求解. 在caffe中,不同的activation function对应的sgd的方式是不同的,因此,在配置文 ...