事故发生地

如你所见,这个输出看上去是对的,但结果是WA。
源代码:悬棺求调,很急,在线等!!!!!
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,xa,ya,xb,yb;
char a[110][110];
bool can=false;
inline void dfs(int x,int y){//为了卡常
if(x==xb&&y==yb){
can=true;
}
if(x>=0&&x<n&&y>=0&&y<n&&a[x][y]=='.'){
a[x][y]='#';
dfs(x,y+1);
dfs(x+1,y);
dfs(x,y-1);
dfs(x-1,y);
}
}
signed main(){
int t;
cin>>t;
while(t--){
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
char ls=getchar();
if(ls=='.'||ls=='#'){
a[i][j]=ls;
}
}
}
cin>>xa>>ya>>xb>>yb;
if(a[xa][ya]=='#'||a[xb][yb]=='#'){
puts("NO");
}
else{
dfs(xa,ya);
if(can==true) puts("YES");
else puts("NO");
}
can=false;
}
}