迷宫问题
![img](https://img-blog.csdnimg.cn/20201118224130867.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1Bob2VuaXhfWmVuZ0hhbw==,size_16,color_FFFFFF,t_70#pic_center)
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=20+5;
int T,sx,sy,tx,ty,vis[maxn][maxn],d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
char s[maxn][maxn];
struct Node{
int x,y;
};
int main(){
int i;
cin>>T;
while(T--){
memset(vis,0,sizeof(vis));
cin>>sx>>sy>>tx>>ty;
for(i=0;i<20;i++)cin>>s[i];
queue<Node>q;
Node now;now.x=sx;now.y=sy;
q.push(now);
while(!q.empty()){
now=q.front();q.pop();
if(vis[now.x][now.y])continue;
vis[now.x][now.y]=1;
for(i=0;i<4;i++){
Node nex;nex.x=now.x+d[i][0];nex.y=now.y+d[i][1];
if(nex.x>=0&&nex.x<20&&nex.y>=0&&nex.y<20&&!vis[nex.x][nex.y]&&s[nex.x][nex.y]=='.')q.push(nex);
}
}
if(vis[tx][ty])cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}