建议添加标签“深度优先搜索,DFS”
  • 板块P1141 01迷宫
  • 楼主haley001
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/20 14:47
  • 上次更新2024/7/20 15:46:34
查看原帖
建议添加标签“深度优先搜索,DFS”
1355852
haley001楼主2024/7/20 14:47
#include<bits/stdc++.h>
using namespace std;
int n,m,ans[100001],sum,f[1001][1001];
bool a[1001][1001];
void dfs(int x,int y,bool z,int iii){
	if(x<=0 or x>n or y<=0 or y>n or f[x][y] != 0 or a[x][y]!=z)return;
	f[x][y]=iii;ans[iii]++;
	dfs(x-1,y,!z,iii);dfs(x+1,y,!z,iii);dfs(x,y-1,!z,iii);dfs(x,y+1,!z,iii);
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){
		char c;
		cin>>c;a[i][j]=c-'0';
	}
	for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		if(f[x][y]==0)dfs(x,y,a[x][y],i);
		else ans[i]=ans[f[x][y]];	
		cout<<ans[i]<<endl;
	}
	return 0;
}
2024/7/20 14:47
加载中...