社区讨论

RE,求助!!

P114101迷宫参与者 4已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@lo24e9c6
此快照首次捕获于
2023/10/23 07:48
2 年前
此快照最后确认于
2023/11/03 08:07
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define re register
const int N=1005;

int n,m;
int a[N][N];

int tmp;
int vis[N][N];
int me[100005];
int dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};
void dfs(int x,int y,int q){
	vis[x][y]=q,tmp++;
	for(re int i=1;i<=4;i++){
		int nx=dx[i]+x,ny=dy[i]+y;
		if(nx<1||nx>n||ny<1||ny>n||vis[nx][ny]!=-1||a[nx][ny]==a[x][y])
			continue;
		dfs(nx,ny,q);
	}
}
signed main(){
	std::ios::sync_with_stdio(0);
	std::cin.tie(0);
	
	//freopen("maze.in","r",stdin);
	//freopen("maze.out","w",stdout);
	
	cin>>n>>m;
	for(re int i=1;i<=n;i++)
		for(re int j=1;j<=n;j++)
			scanf("%1lld",&a[i][j]);
	
	memset(vis,-1,sizeof(vis));
	for(re int i=1,x,y;i<=m;i++){
		cin>>x>>y;
		if(vis[x][y]!=-1)
			cout<<me[vis[x][y]]<<"\n";
		else{
			tmp=0;
			dfs(x,y,i);
			me[i]=tmp;
			cout<<tmp<<"\n";
		}
	}
	
	return 0;
}

回复

8 条回复,欢迎继续交流。

正在加载回复...