01迷宫救急!

5. 01迷宫

题目ID:8110必做题100分

最新提交:

Wrong Answer

0 分

历史最高:

Wrong Answer

0 分

时间限制: 1000ms

空间限制: 131072kB

题目描述

有一个仅由数字0与1组成的N∗N格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。

你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)
代码

#include<bits/stdc++.h>
using namespace std;
char mp[1005][1005];
int vis[1005][1005];
int cnt[5005];
int n,m,t,ans;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
void dfs(int x,int y){
	for(int i=0;i<4;i++){
		int nx=x+dx[i];
		int ny=y+dy[i];
		if(nx<1||ny<1||nx>n||ny>n||mp[x][y]==mp[nx][ny]||vis[nx][ny])continue;
		vis[nx][ny]=1;
		ans++;
		dfs(nx,ny);
	}
}
int main(){
    cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mp[i][j];
		}
	}
	while(m--){
		int x,y;
		cin>>x>>y;
  		if(!vis[x][y]){
			t++;
   			ans=0;
   			dfs(x,y);
			cnt[t]=ans;
		}
        cout<<cnt[t]<<"\n";
	}
	return 0;
}

私信

@何相龙 怎么还能私信的

6。

?不能吗?点一下头像试试看呢?
image

@何相龙 我是说怎么能私信解决的