题目描述
有一个高 H 行、宽 W 列的网格,从上到下第 i 行、从左到右第 j 列的格子记作 (i,j)。
每个格子可能是“起点”、“道路”或“障碍物”之一。
格子 (i,j) 的状态用字符 Ci,j 表示,若 Ci,j=S,则为起点;若 Ci,j=.,则为道路;若 Ci,j=#,则为障碍物。起点格子仅有一个。
请判断是否存在一条从起点出发,只能上下左右移动、且不经过障碍物,最终回到起点的长度不少于 4 的路径,并且除起点外路径上不重复经过同一个格子。
更严格地说,判断是否存在满足以下条件的整数 n 和格子序列 (x0,y0),(x1,y1),…,(xn,yn):
- n≥4
- Cx0,y0=Cxn,yn=S
- 对于 1≤i≤n−1,有 Cxi,yi=.
- 对于 1≤i<j≤n−1,有 (xi,yi)=(xj,yj)
- 对于 0≤i≤n−1,格子 (xi,yi) 与 (xi+1,yi+1) 必须在上下或左右相邻
输入格式
输入按以下格式从标准输入读入。
H W
C1,1…C1,W
⋮
CH,1…CH,W
输出格式
如果存在满足题意的路径,输出 Yes,否则输出 No。
样例 1
输入
4 4
....
#.#.
.S..
.##.
输出
Yes
样例 2
输入
2 2
S.
.#
输出
No
样例 3
输入
5 7
.#...#.
..#.#..
...S...
..#.#..
.#...#.
输出
No
说明/提示
限制
- 4≤H×W≤106
- H,W 均为不小于 2 的整数
- Ci,j 只会是
S、.、# 之一
- 仅有一个格子 Ci,j=S
样例解释 1
存在如下路径满足条件:
$(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)$。
由 ChatGPT 4.1 翻译