求助!
查看原帖
求助!
484007
cute_chuanpu楼主2022/1/17 10:35

我的代码:

#include<iostream>
using namespace std;
int n,m,pz[1005][1005],flag[1005][1005],ans[1000005],cnt,a,b;
int dx[5]={0,-1,0,-1,0},dy[5]={0,0,1,0,-1};
int dfs(int x,int y,int num){
	int step=0;
	for(int i=1;i<=4;i++){
		int xx=x+dx[i],yy=y+dy[i];
		if(xx>=1&&xx<=n && yy>=1&&yy<=n && pz[xx][yy]==1-num && flag[xx][yy]==0){
			flag[xx][yy]=cnt;
			step+=dfs(xx,yy,1-num)+1;
		}
	}
	return step;
}
char c;
int main(){
	ios::sync_with_stdio(false);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>c;
			pz[i][j]=c-'0';
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(flag[i][j]==0){
				cnt++;
				flag[i][j]=cnt;
				ans[cnt]=dfs(i,j,pz[i][j]);
			}
		}
	}
	for(int i=1;i<=m;i++){
		cin>>a>>b;
		cout<<ans[flag[a][b]]<<endl;
	}
	return 0;
}

全部W_______A_________ 怎么改

2022/1/17 10:35
加载中...