测试点本地输出正确,测评爆零?
查看原帖
测试点本地输出正确,测评爆零?
181974
Smoke_Clouds_楼主2024/8/14 16:11
#include<iostream>
#include<cstdio>
using namespace std;
int sum1[1000001];
int x1[1000001],y1[1000001];
long long n,m,i,j,x,y,x3,y3,t,cnt,l,r,zc1,zc2;
int x2[5]={0,1,-1,0,0};
int y2[5]={0,0,0,1,-1};
long long map[2010][2010],be[2010][2010];
bool flag[2010][2010];
char c;
int main(){
//	freopen("01.in","r",stdin);
//	freopen("01.out","w",stdout);
	cin>>n>>m;
	getchar();
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			c=getchar();
			map[i][j]=c-'0';
		}
		getchar();
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			if(be[i][j]==0){
				cnt++;
				l=1;r=1;
				x1[l]=i;y1[l]=j;
				flag[i][j]=true;
				be[i][j]=cnt;
				sum1[cnt]++;
				while(l<=r){
					x=x1[l];y=y1[l];
					for(t=1;t<=4;t++){
						x3=x+x2[t];
						y3=y+y2[t];
						if(x3>=1&&y3>=1&&x3<=n&&y3<=n&&map[x][y]+map[x3][y3]==1&&!flag[x3][y3]){
						 	be[x3][y3]=be[x][y];
						 	sum1[cnt]++;
							r++;
							x1[r]=x3;y1[r]=y3;
							flag[x3][y3]=true;
						}
					}
					l++;
				}
			}
		}
	}
	for(i=1;i<=m;i++){
		cin>>zc1>>zc2;
		printf("%d\n",sum1[be[zc1][zc2]]);
	}
	return 0;
}```
2024/8/14 16:11
加载中...