#include<iostream>
using namespace std;
struct point {
int x, y;
};
point s, t;
int n;
char a[110][100];
bool vis[110][110];
bool flag = false;
int d[][2] = { {-1,0},{1,0},{0,-1},{0,1} };
void dfs(point p) {
if (p.x == t.x && p.y == t.y) {
flag = true;
return;
}
for (int i = 0; i < 4; i++)
{
point nxt;
nxt.x = p.x + d[i][0];
nxt.y = p.y + d[i][1];
if (nxt.x<1 || nxt.x>n || nxt.y<1 || nxt.y>n) continue;
if (a[nxt.x][nxt.y] == '.' && !vis[nxt.x][nxt.y]) {
vis[nxt.x][nxt.y] = 1;
dfs(nxt);
}
}
}
int main()
{
int T; cin >> T;
while (T--)
{
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> a[i][j];
cin >> s.x >> s.y >> t.x >> t.y;
s.x++; s.y++; t.x++; t.y++;
flag = false;
memset(vis, 0, sizeof vis);
vis[s.x][s.y] = 1;
dfs(s);
if (flag) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
迷宫类问题深搜
最新推荐文章于 2024-10-02 23:40:03 发布