#abc276e. [abc276_e]Round Trip

[abc276_e]Round Trip

题目描述

我们有一个从上到下有 HH 行,从左到右有 WW 列的网格。记 (i,j)(i, j) 为从上往下数第 ii 行(1leqileqH1 \\leq i \\leq H)和从左往右数第 jj 列(1leqjleqW1 \\leq j \\leq W)。

每个方格可以是以下之一:初始点、道路或障碍物。
方格 (i,j)(i, j) 由字符 Ci,jC_{i, j} 表示。如果 Ci,j=C_{i, j} = S,则该方格是初始点;如果 Ci,j=C_{i, j} = .,则是道路;如果 Ci,j=C_{i, j} = #,则是障碍物。初始点只有一个。

判断是否存在一条长度至少为 44 的路径,该路径从初始点开始,重复向相邻的方格垂直或水平移动,并在不通过障碍物或多次访问同一方格的情况下返回到初始点。
更具体地说,判断是否存在一个整数 nn 和一系列方格 (x0,y0),(x1,y1),dots,(xn,yn)(x_0, y_0), (x_1, y_1), \\dots, (x_n, y_n),满足以下条件。

  • ngeq4n \\geq 4
  • Cx0,y0=Cxn,yn=C_{x_0, y_0} = C_{x_n, y_n} = S
  • 如果 1leqileqn11 \\leq i \\leq n - 1,则 Cxi,yi=C_{x_i, y_i} = .
  • 如果 1leqiltjleqn11 \\leq i \\lt j \\leq n - 1,则 (xi,yi)neq(xj,yj)(x_i, y_i) \\neq (x_j, y_j)
  • 如果 0leqileqn10 \\leq i \\leq n - 1,则方格 (xi,yi)(x_i, y_i) 和方格 (xi+1,yi+1)(x_{i+1}, y_{i+1}) 在垂直或水平方向上相邻。

约束条件

  • 4leqHtimesWleq1064 \\leq H \\times W \\leq 10^6
  • HHWW 是大于等于 22 的整数。
  • Ci,jC_{i, j}S.#
  • 有且仅有一个 (i,j)(i, j) 满足 Ci,j=C_{i, j} = S

输入

从标准输入读取输入数据,输入格式如下:

HH WW C1,1ldotsC1,WC_{1, 1} \\ldots C_{1, W} vdots\\vdots CH,1ldotsCH,WC_{H, 1} \\ldots C_{H, 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