求助orz
查看原帖
求助orz
298692
Rn_Lamsuly楼主2020/11/2 13:18

rt

#include<bits/stdc++.h>
using namespace std;
bool cell[105][105];
int n,m;
int sum;
void bfs(int x,int y)
{
	queue<pair<int,int> > node;
	node.push(make_pair(x,y));
	while(node.size())
	{
		int nowx=node.front().first;
		int nowy=node.front().second;
		cell[nowx][nowy]=false;
		if(nowx-1>0&&cell[nowx-1][nowy])node.push(make_pair(nowx-1,nowy));
		if(nowy-1>0&&cell[nowx][nowy-1])node.push(make_pair(nowx,nowy-1));
		if(nowx+1<=n&&cell[nowx+1][nowy])node.push(make_pair(nowx+1,nowy));
		if(nowy+1<=m&&cell[nowx][nowy+1])node.push(make_pair(nowx,nowy+1));
		node.pop();
	}
	return ;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(register int i=1;i<=n;++i)
	{
		for(register int j=1;j<=m;++j)
		{
			char c=getchar();
			if(c=='0')cell[i][j]=false;
			cell[i][j]=true;
		}
		getchar();
	}
	for(register int i=1;i<=n;++i)
	{
		for(register int j=1;j<=m;++j)
		{
			if(cell[i][j])
			{
				bfs(i,j);
				sum++;
			}
		}
	}
	cout<<sum;
	return 0;
}

2020/11/2 13:18
加载中...