#4782. Snuke Maze

0

Snuke Maze

Snuke Maze

题目描述

我们有一个有 HH 行 WW 列的网格。 我们用 (i,j)(i,j) 表示从上数第 ii 行、从左数第 jj 列的格子。 每个格子上都写有一个小写英文字母。格子 (i,j)(i,j) 上写的字母等于给定字符串 SiS_i 的第 jj 个字符。 Snuke 将重复移动到与当前格子有公共边的相邻格子,从 (1,1)(1,1) 移动到 (H,W)(H,W)。 判断是否存在一条路径, 使得所访问格子上的字母(包括起点 (1,1)(1,1) 和终点 (H,W)(H,W))按访问顺序为 ss →\rightarrow nn →\rightarrow uu →\rightarrow kk →\rightarrow ee →\rightarrow ss →\rightarrow nn →…\rightarrow \dots。 这里,当且仅当 ∣i1−i2∣+∣j1−j2∣=1|i_1-i_2|+|j_1-j_2| = 1 时,格子 (i1,j1)(i_1,j_1) 被称为格子 (i2,j2)(i_2,j_2) 的与边相邻的格子。 形式化地,判断是否存在格子序列 ((i1,j1),(i2,j2),…,(ik,jk))((i_1,j_1),(i_2,j_2),\dots,(i_k,j_k)),满足:

(i1,j1)=(1,1),(ik,jk)=(H,W)(i_1,j_1) = (1,1),(i_k,j_k) = (H,W); 对所有 t (1≤t<k)t\ (1 \leq t < k),(it+1,jt+1)(i_{t+1},j_{t+1}) 是 (it,jt)(i_t,j_t) 的与边相邻的格子;以及 对所有 t (1≤t≤k)t\ (1 \leq t \leq k),格子 (it,jt)(i_t,j_t) 上写的字母等于单词 snukesnuke 的第 (((t−1) mod 5)+1)(((t-1) \bmod 5) + 1) 个字符。

输入格式

输入从标准输入给出,格式如下: HH WW S1S_1 S2S_2 ⋮\vdots SHS_H

输出格式

如果存在满足题目条件的路径,则输出 YesYes;否则输出 NoNo。

2 3
sns
euk
Yes
2 2
ab
cd
No
5 7
skunsek
nukesnu
ukeseku
nsnnesn
uekukku
Yes

提示

2≤H,W≤5002\leq H,W \leq 500 HH 和 WW 是整数。 SiS_i 是长度为 WW 的由小写英文字母组成的字符串。路径 $(1,1) \rightarrow (1,2) \rightarrow (2,2) \rightarrow (2,3)$ 满足条件, 因为这些格子按访问顺序分别写有 ss →\rightarrow nn →\rightarrow uu →\rightarrow kk。

标签: AtCoder|abc308D

来源

AtCoder|abc308D