70分玄关
查看原帖
70分玄关
767863
封禁用户楼主2024/6/28 16:26

代码


#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,qx,qy,b[1010][10010],s;
char a[1010][10010];
int dx[5]={0,0,1,0,-1};
int dy[5]={0,-1,0,1,0};
int dfs(int x,int y)
{
	for(int i=1;i<=4;i++)
	{
		int xx=x+dx[i];
		int yy=y+dy[i];
		if(xx>0&&xx<=n&&yy>0&&yy<=n)
		{
			if(a[x][y]=='1'&&a[xx][yy]=='0'&&b[xx][yy]==0)
			{
				b[xx][yy]=1;
				s++;
				dfs(xx,yy);
			}
			else if(a[x][y]=='0'&&a[xx][yy]=='1'&&b[xx][yy]==0)
			{
				b[xx][yy]=1;
				s++;
				dfs(xx,yy);
			}
		}
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>a[i][j];
		}
	}
	while(m!=0)
	{
		m--;
		memset(b,0,sizeof(b));
		s=1;
		scanf("%d%d",&qx,&qy);
		b[qx][qy]=1;
		dfs(qx,qy);
		printf("%d\n",s);
	}
	return 0;
}

2024/6/28 16:26
加载中...