#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll k,n,a,b,c,d;//k个地图 n×n的大小 起点ab 终点cd
char mp[105][105];//地图
bool st[105][105],f;//标记是否走过 f标记是否走到终点
int vist[4][2]={-1,0,0,1,1,0,0,-1};
void dfs(int x,int y){//来到了xy这个点
//出口
if(x==c&&y==d){
f=1;
return;
}
//上下左右全部尝试一遍
for(int i=0;i<4;i++){
int tx=x+vist[i][0],ty=y+vist[i][1];
//不是墙、没越界、没走过
if(mp[tx][ty]=='.' && tx>=0&&tx<n&&ty>=0&&ty<n && st[tx][ty]==0){
st[tx][ty]=1;
dfs(tx,ty);
//不需要还原,染色问题
}
}
}
int main()
{
cin>>k;
while(k--){
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>mp[i][j];
cin>>a>>b>>c>>d;
//清空上一次的st
memset(st,0,sizeof(st));//st清零
f=0;
st[a][b]=1;//起点已经走过
dfs(a,b);// 深搜的起点在a,b
if(f==1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
07-11
1008
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-21
919
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
02-01
634
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)