哪里出了问题?
查看原帖
哪里出了问题?
238687
ATRI楼主2020/8/7 10:47
#include<bits/stdc++.h>
using namespace std;
struct q
{
	int x;
	int y;
};
typedef struct q z;
z e1,e2;
int n,m,cuntu[2000][2000],st[2000][2000],dx[5]={0,0,0,-1,1},dy[5]={0,1,-1,0,0},ans;
queue<z>p;
void bfs(int x,int y)
{
	
	ans++;
	e1.x=x; e1.y=y;
	p.push(e1);
	st[x][y]=1;
	while(!p.empty())
	{
		e2=p.front();
		p.pop();
		int l,r;
		for(int i=1;i<=4;i++)
		{
			l=e2.x+dx[i];
			r=e2.y+dy[i];
			if(st[l][r]==0&&cuntu[x][y]&&l>=1&&l<=n&&r>=1&&r<=m)
			{
				e2.x=l; e2.y=r;
				p.push(e2);
				st[l][r]=1;
			}
		}	
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
	   	    scanf("%1d",&cuntu[i][j]);
	}
	   	
	   	  for(int i=1;i<=n;i++)
	   	     for(int j=1;j<=m;j++)
	   	     {
	   	     	 if(st[i][j]==0&&cuntu[i][j])
	   	     	 	bfs(i,j);
			 }
	cout<<ans;
	return 0;
}
2020/8/7 10:47
加载中...