#include #include #include using namespace std; const int SIZE = 1000; int step[4][2] = {{-1,0},{1,0},{0,-1},{0,1}}; typedef struct { int x; int y; int s; } node; int main(int argc,char** argv){ int total; bool all_in_all[100]; scanf("%d",&total); for(int counter = 0; counter < total; counter ++){ all_in_all[counter] = false; int hx,lx,hy,ly,cnt; int head = 0,tail = 0; queue q; char a[SIZE][SIZE]; scanf("%d",&cnt); for(int i = 0; i < cnt; i++) scanf("%s",a[i]); //hx,hy是出发点,lx,ly是目标位置 scanf("%d%d%d%d",&hx,&hy,&lx,&ly); while(!q.empty())q.pop(); node now; now.x = hx; now.y = hy; now.s = 0; q.push(now); tail++; while(!q.empty()){ now = q.front(); q.pop(); if(now.x == lx && now.y == ly){ all_in_all[counter] = true; break; } a[now.x][now.y] = '#'; for(int i=0;i<4;i++){ int x=now.x+step[i][0]; int y=now.y+step[i][1]; if(x >= 0 && y >= 0 && x < cnt && y < cnt && a[x][y] == '.'){ a[x][y] = '#'; node next; next.x = x; next.y = y; next.s = now.s + 1; q.push(next); } } //↓while的终止大括号 } } for(int counter = 0; counter < total; counter ++){ if(all_in_all[counter]) printf("YES\n"); else printf("NO\n"); } // system("PAUSE"); return 0; }