mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
68 lines
1.4 KiB
C++
68 lines
1.4 KiB
C++
|
#include<stdio.h>
|
|||
|
#include<stdlib.h>
|
|||
|
#include<queue>
|
|||
|
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<node> 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;
|
|||
|
}
|