#include <cstdio>
#include <iostream>
using namespace std;
const int dx[]={0, +1, 0, -1};
const int dy[]={-1, 0, +1, 0};
int M, N;
char maze[16+2][16+2];
bool flag[16+2][16+2];
struct NODE{
int x, y;
}S, E;
bool check(int x, int y){
if(maze[x][y]=='#') return false;
if(flag[x][y]) return false;
if(x<0 || y<0)return false;
if(x>=N || y>=N) return false;
return true;
}
bool Search(int x, int y){
if(x==E.x && y==E.y) return true;
for(int i = 0; i<4; ++i){
if(check(x+dx[i], y+dy[i])){
flag[x][y] = true;
if(Search(x+dx[i], y+dy[i])) return true;
}
}
return false;
}
int main(){
scanf("%d", &M);
for(int m = 1; m<=M; ++m){
scanf("%d", &N);
for(int y = 0; y<N; ++y)for(int x = 0; x<N; ++x){
cin >> maze[x][y];
if(maze[x][y]=='s') S.x = x, S.y = y;
else if(maze[x][y]=='e') E.x = x, E.y = y;
}
flag[S.x][S.y] = true;
if(Search(S.x, S.y)) printf("YES\n");
else printf("NO\n");
for(int y = 0; y<N; ++y)for(int x = 0; x<N; ++x) maze[x][y] = 0;
for(int y = 0; y<N; ++y)for(int x = 0; x<N; ++x) flag[x][y] = false;
}
return 0;
}
CodeVS 1215 迷宮 題解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.