题目描述
我们有一个从上到下有 H 行,从左到右有 W 列的网格。记 (i,j) 为从上往下数第 i 行(1leqileqH)和从左往右数第 j 列(1leqjleqW)。
每个方格可以是以下之一:初始点、道路或障碍物。
方格 (i,j) 由字符 Ci,j 表示。如果 Ci,j= S
,则该方格是初始点;如果 Ci,j= .
,则是道路;如果 Ci,j= #
,则是障碍物。初始点只有一个。
判断是否存在一条长度至少为 4 的路径,该路径从初始点开始,重复向相邻的方格垂直或水平移动,并在不通过障碍物或多次访问同一方格的情况下返回到初始点。
更具体地说,判断是否存在一个整数 n 和一系列方格 (x0,y0),(x1,y1),dots,(xn,yn),满足以下条件。
- ngeq4。
- Cx0,y0=Cxn,yn=
S
。
- 如果 1leqileqn−1,则 Cxi,yi=
.
。
- 如果 1leqiltjleqn−1,则 (xi,yi)neq(xj,yj)。
- 如果 0leqileqn−1,则方格 (xi,yi) 和方格 (xi+1,yi+1) 在垂直或水平方向上相邻。
约束条件
- 4leqHtimesWleq106
- H 和 W 是大于等于 2 的整数。
- Ci,j 是
S
、.
或 #
。
- 有且仅有一个 (i,j) 满足 Ci,j=
S
。
输入
从标准输入读取输入数据,输入格式如下:
H W
C1,1ldotsC1,W
vdots
CH,1ldotsCH,W
输出
如果存在满足题目描述条件的路径,则输出 Yes
;否则输出 No
。
样例输入 1
4 4
....
.#..
.S..
.##.
样例输出 1
Yes
路径 $(3, 2) \\rightarrow (2, 2) \\rightarrow (1, 2) \\rightarrow (1, 3) \\rightarrow (1, 4) \\rightarrow (2, 4) \\rightarrow (3, 4) \\rightarrow (3, 3) \\rightarrow (3, 2)$ 满足题目条件。
样例输入 2
2 2
S.
.#
样例输出 2
No
样例输入 3
5 7
.#...#.
..#.#..
...S...
..#.#..
.#...#.
样例输出 3
No