0分求助
查看原帖
0分求助
877968
1233211234567a楼主2023/11/10 12:35
#include<bits/stdc++.h>
using namespace std;
long long n;
int a[1002][1002]={};
void dfs(long long x,long long y){
	if(a[x+1][y]!=abs(a[x][y]-1)&&a[x][y+1]!=abs(a[x][y]-1)&&a[x][y-1]!=abs(a[x][y]-1)&&a[x][y+1]!=abs(a[x][y]-1)||x>n||y>n||y<1||x<1){
		a[x][y]=3;
		return;
	}
	long long xx=a[x][y];
	a[x][y]=3; 
	if(a[x+1][y]==abs(xx-1)){ // abs(0-1)=1,abs(1-1)=0
		dfs(x+1,y);
	}
	if(a[x-1][y]==abs(xx-1)){
		dfs(x-1,y);
	}
	if(a[x][y-1]==abs(xx-1)){
		dfs(x,y-1);
	}
	if(a[x][y+1]==abs(xx-1)){
		dfs(x,y+1);
	}
}
int main(){
	long long n,m;
	cin>>n>>m;
	int b[n+2][n+2]={};
	for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				char ch;
				cin>>ch;
				a[i][j]=int(ch-48);
				b[i][j]=a[i][j];
			}
    }
	for(int i=0;i<m;i++){
		long long x,y,sum=0;
		cin>>x>>y;
		dfs(x,y);
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(a[i][j]==3){
					sum++;
					a[i][j]=b[i][j];
				}
			}
		}
		cout<<sum<<"\n";
	}
	return 0;
} 
2023/11/10 12:35
加载中...