1
2023-07-26 15:48:54
发布于:江苏
17阅读
0回复
0点赞
#include<iostream>
using namespace std;
int n,m;
int x1,x2,y1,y2;
bool b;
int dx[5]= {1,0,-1,0};
int dy[5]= {0,-1,0,1};
char a[105][105];
void dfs(int x,int y) {
for(int i=0; i<4; i++) {
int tx = x+dx[i],ty = y + dy[i];
if(tx >= 0&& tx<n &&ty>=0&&ty<n && a[tx][ty]=='.') {
if(tx==x2 && ty==y2) {
b = 1;
return;
}
else{
a[tx][ty]='#';
dfs(tx,ty);//新的起点
}
}
}
}
int main() {
cin>>m;
for(int j=0; j<m; j++) {
cin>>n;
for(int i=0; i<n; i++) {
for(int z=0; z<n; z++) {
cin>>a[i][z];
}
}
cin>>x1>>y1>>x2>>y2;
if(a[x1][y1]=='#'||a[x2][y2]=='#'){
cout<<"NO"<<endl;
}
else{
if(x1==x2&&y1==y2){
cout<<"YES"<<endl;
}
else{
a[x1][y1]='#';
dfs(x1,y1);
if(b==0) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
b=0;
}
}
}
return 0;
}
全部评论 1
《A+B problem》
2023-07-26 来自 广东
0
有帮助,赞一个