俩RE,其余全WA,我在老师家做的,我有点点太服了,我还扬言要全对。
  • 板块P1141 01迷宫
  • 楼主Hisy
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/6/12 21:32
  • 上次更新2023/10/23 13:15:42
查看原帖
俩RE,其余全WA,我在老师家做的,我有点点太服了,我还扬言要全对。
922691
Hisy楼主2023/6/12 21:32
#include<cstdio>
using namespace std;
char charactor;
bool map[1001][1001];
int visit[1001][1001],ans[100001];
int num,temp,point[100001][3];
int walkx[5]={0,0,0,-1,1};
int walky[5]={0,1,-1,0,0};
void dfs(int startx,int starty,int pointsum){
	if((map[startx+1][starty+1]==map[startx][starty]&&map[startx+1][starty-1]==map[startx][starty]
	&&map[startx-1][starty+1]==map[startx][starty]&&map[startx-1][starty-+1]==map[startx][starty])
	||(visit[startx+1][starty+1])&&visit[startx+1][starty-1]&&visit[startx-1][starty+1]&&visit[startx-1][starty-1]){
		ans[pointsum]++;
		return;
	}
	ans[pointsum]++;
	visit[startx][starty]=1;
	for(int counter=1;counter<=4;counter++){
		int coordx=startx+walkx[counter];
		int coordy=starty+walky[counter];
		if(!map[coordx][coordy]&&coordx&&coordx<=num&&
		coordy&&coordy<=num&&(map[startx][starty]^map[coordx][coordy])){
			dfs(coordx,coordy,pointsum);
		}
	}
}
int main(){
	scanf("%d%d",&num,&temp);
	for(int count1=1;count1<=num;count1++){
		for(int count2=1;count2<=num;count2++){
			scanf("%c",&charactor);
			map[count1][count2]=(charactor=='1');
		}
	}
	for(int count=1;count<=temp;count++){
		scanf("%d%d",&point[count][1],&point[count][2]);
		dfs(point[count][1],point[count][2],count);
	}
	for(int count=1;count<=temp;count++){
		printf("%d",ans[count]);
		puts("");
	}
	return 0;
}
2023/6/12 21:32
加载中...