50pts,求助
  • 板块P1141 01迷宫
  • 楼主zafa2023
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/20 18:15
  • 上次更新2024/7/20 19:38:49
查看原帖
50pts,求助
979584
zafa2023楼主2024/7/20 18:15
#include<bits/stdc++.h>
using namespace std;
char x[1001][1001];
int x2[1001][1001]={};
bool iffi=0;
int ans=1;
int n,m;
void bds(int x1,int y,char zt){
	x2[x1][y]=1;
	if(x1!=1&&x2[x1-1][y]==0&&x[x1-1][y]!=zt)
	{
		ans++;
		if(zt=='0')bds(x1-1,y,'1');
		else bds(x1-1,y,'0');
	}
	if(y!=1&&x2[x1][y-1]==0&&x[x1][y-1]!=zt)
	{
		ans++;
		if(zt=='0')bds(x1,y-1,'1');
		else bds(x1,y-1,'0');
	}
	if(x1!=n&&x2[x1+1][y]==0&&x[x1+1][y]!=zt)
	{
		ans++;
		if(zt=='0')bds(x1+1,y,'1');
		else    bds(x1+1,y,'0');
	}
	if(y!=n&&x2[x1][y+1]==0&&x[x1][y+1]!=zt)
	{
		ans++;
		if(zt=='0')bds(x1,y+1,'1');
		else bds(x1,y+1,'0');
	}
	if(ans==n*n&&iffi==0)
	{
		cout<<ans<<endl;
		iffi=1;
		return ;
	}
	if((x[x1+1][y]==zt||x2[x1+1][y]==1)&&(x[x1-1][y]==zt||x2[x1-1][y]==1)&&(x[x1][y+1]==zt||x2[x1][y+1]==1)&&(x[x1][y-1]==zt||x2[x1][y-1]==1))
	{
		return ;
	}
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
    	for(int i1=1;i1<=n;i1++)
    	{
    		cin>>x[i][i1];
		}
	}
	x2[1][1]=1;
	int x3,y;
	for(int i=1;i<=m;i++)
	{
		cin>>x3>>y;
		x2[x3][y]=1;
		bds(x3,y,x[x3][y]);
		if(iffi==0)cout<<ans<<endl;
		ans=1;
		iffi=0;
		memset(x2,0,sizeof(x2));
	}
	return 0;
}

2024/7/20 18:15
加载中...