DFS求调!
  • 板块P1141 01迷宫
  • 楼主ybc2026lhy
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/8/30 12:03
  • 上次更新2024/8/30 15:17:49
查看原帖
DFS求调!
1128039
ybc2026lhy楼主2024/8/30 12:03
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int n,q,vis[1005][1005],sum=0;
char s[1005][1005];
bool check(int l,int r,int x,int y){
	if(x<1||x>n||y<1||y>n||s[l][r]==s[x][y]||vis[x][y]==1){
		return false;
	}
	return true;
}
void dfs(int x,int y,int k){
	k++;
	for(int i=0;i<4;i++){
		int nx=x+dx[i],ny=y+dy[i];
		if(check(x,y,nx,ny)==true){
			vis[nx][ny]=1;
			dfs(nx,ny,k+1);
			vis[nx][ny]=0;
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL),cout.tie(NULL);
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>s[i][j];
		}
	}
	while(q--){
		memset(vis,0,sizeof(vis));
		int x,y;
		cin>>x>>y;
		dfs(x,y,1);
		cout<<sum<<"\n";
	}
	return 0;
}
2024/8/30 12:03
加载中...