洛谷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),求出每一项 ...
 
随机推荐
- java中将数组、对象、Map、List转换成JSON数据
			
如果要将数组.对象.Map.List转换成JSON数据,那我们需要一些jar包: json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging.ja ...
 - 更改Anaconda中Jupyter的默认文件保存目录
			
转载:https://blog.csdn.net/u014552678/article/details/62046638 总结:修改Anaconda中的Jupyter Notebook默认工作路径的三 ...
 - MVC学习笔记:MVC实现用户登录验证ActionFilterAttribute用法并实现统一授权
			
在项目下新建一个文件夹来专门放过滤器类,首先创建一个类LoginFilter,这个类继承ActionFilterAttribute.用来检查用户是否登录和用户权限.: using System; us ...
 - Vim-命令合集
			
命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...
 - Linux同步目录 保留文件修改时间和权限 rsync
			
scp copy文件夹的时候,会强行覆盖文件,导致增量同步的时候不方便,而rsync则能很好解决这个问题. rsync -avz ubuntu@192.168.1.208:/home/ubuntu/m ...
 - 常用mysql系统参数参考
			
http://aaronsa.blog.51cto.com/5157083/1741481
 - 4. NBU文件备份与恢复,图形界面&字符界面操作
			
一. 图形界面文件备份与恢复 1.1 文件备份 待补充 1.2 Windows文件恢复 (1) 打开恢复客户端 (2) 检查设置 (3) 查询可恢复信息 (4) 选取恢复时间点和文件 (5) 选择恢 ...
 - 【转】WebSocket 是什么原理?为什么可以实现持久连接?
			
WebSocket是HTML5出的东西 也就是说HTTP协议没有变化 但HTTP是不支持持久连接的(长连接,循环连接的不算)或者说WebSocket干脆就不是基于HTTP来执行的.但是...说不通啊. ...
 - Centos 5.5 编译安装mysql 5.5.9
			
下载mysql wget http://mysql.mirrors.pair.com/Downloads/MySQL-5.5/mysql-5.5.9.tar.gz 创建mysql用户 [root@x ...
 - Python 3 collections.defaultdict() 与 dict的使用和区别
			
综述: 这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_fact ...