#P0991. 迷宫逃生

迷宫逃生

题目描述

在一个 RRCC 列的网格迷宫中有以下元素:

  • SS:人的起点(唯一)。
  • EE:安全出口(唯一)。
  • #\#:墙壁,人和火均无法穿过。
  • ..:空地。
  • FF:火源(唯一)。

每分钟,事件按以下规则发展:

  1. 火的蔓延:火会向上下左右四个方向蔓延到相邻的空地(火无法穿过墙壁)。
  2. 人的移动:人可以从当前格子向上下左右四个方向移动一格。人不能移动到墙壁、当前有火的格子,或者在本分钟即将被火烧到的格子(即如果某一格子在时刻 tt 被火烧到,人不能在时刻 tt 踏入该格,否则会被烧死)。

人可以停留在起点等待,但如果火蔓延到起点,且人未能及时离开,则同样会死亡。

人和火均不能离开网格边界。

请判断人是否能在火烧到自己之前安全到达出口。

输入格式

第一行包含一个整数 tt (1t101 \le t \le 10),表示测试数据组数。

对于每组数据:
第一行包含两个整数 RRCC (1R,C1001 \le R, C \le 100),表示迷宫的行数和列数。
接下来 RR 行,每行一个长度为 CC 的字符串,由字符 SSEE#\#..FF 组成,保证 SSEEFF唯一

输出格式

对于每组数据,输出一行,若能够安全逃生则输出 YESYES,否则输出 NONO(不区分大小写)。

样例

2
3 5
S...E
.....
.F...
3 3
S..
.F.
..E
YES
NO

样例解释

第一组数据:火源位于 (3, 2)(3,\ 2),蔓延到出口 (1, 5)(1,\ 5) 需要 55 分钟。人从起点 (1, 1)(1,\ 1) 向右直行只需 44 分钟即可抵达出口,不会被火烧到,可以安全逃生。

第二组数据:起点 (1, 1)(1,\ 1),火源 (2, 2)(2,\ 2),出口 (3, 3)(3,\ 3)。第 11 分钟火会蔓延到 (1, 2)(1,\ 2)(2, 1)(2,\ 1),人无法离开起点;第 22 分钟火烧到起点,人无法逃生。

数据范围

对于 100%100\% 的数据,1R, C1001≤R,\ C≤1001t101≤t≤10