70分求助!!!
  • 板块P1141 01迷宫
  • 楼主sun1112013
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/12/13 20:20
  • 上次更新2023/12/13 23:19:04
查看原帖
70分求助!!!
946512
sun1112013楼主2023/12/13 20:20
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
char a[N][N];
int n,t,step=1;
int dir[4][2]={-1,0,1,0,0,-1,0,1};
bool vis[N][N];
void dfs(int x,int y){
	for(int i=0;i<4;i++){
		int bx=x+dir[i][0],by=y+dir[i][1];
		if(bx<0||bx>=n||by<0||by>=n) continue;
		if(vis[bx][by]) continue;
		if(a[x][y]==a[bx][by]) continue;
		vis[bx][by]=1;
		step++;
		dfs(bx,by);
	}
}
int main(){
	cin>>n>>t;
	for(int i=0;i<n;i++){
		scanf("%s",a[i]);
	}
	while(t--){
		memset(vis, 0, sizeof(vis));
		int x,y;
		scanf("%d%d",&x,&y);
		vis[x-1][y-1]=1;
		dfs(x-1,y-1);
		printf("%d\n",step);
		step=1;
	}
	return 0;
}
2023/12/13 20:20
加载中...