没过样例求助
查看原帖
没过样例求助
598263
RedLotus_Resolution楼主2022/10/5 21:49
#include<bits/stdc++.h>
using namespace std;
long long n,m,sx,sy,ii,jj,ans;
char mapc[2000][2000];
int mapi[2000][2000];
int px[4]={-1,1,0,0};
int py[4]={0,0,-1,1};
bool vis[1090][1090];
struct point{
		long long x;
		long long y;
}p[1000009];
int main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			scanf("%c",&mapc[i][j]);
			mapi[i][j]=mapc[i][j]-'0';
		}
	}
	for(int i=1;i<=m;i++){
		scanf("%lld%lld",&sx,&sy); 
		ii=0;jj=1;
		ans=1;
		p[ii].x=sx;
		p[ii].y=sy;
		memset(vis,0,sizeof vis);
		vis[sx][sy]=1;
		while(ii<jj){
			ii++;
			for(int j=0;j<4;j++){
				long long nx=p[ii].x+px[j];
				long long ny=p[ii].y+py[j];
				if(nx>=1&&nx<=n&&ny>=1&&ny<=n&&vis[nx][ny]==0&&mapi[nx][ny]!=mapi[p[ii].x][p[ii].y]){
					vis[nx][ny]=1;
					ans++;
					jj++;
					p[jj].x=nx;
					p[jj].y=ny;
				}
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}
感觉有思路,但广搜就是写不对,过本题的帮忙看下谢谢了
2022/10/5 21:49
加载中...