#P1042. 迷雾圣殿的呼唤

迷雾圣殿的呼唤

题目描述

在一片被古老魔法笼罩的森林深处,坐落着传说中守护着世界本源力量的精灵圣殿。相传,只有心怀纯净信念的探索者才能穿过这片布满魔法屏障的丛林,获得精灵族世代守护的智慧结晶。然而,数百年来,无数怀揣梦想的冒险者迷失在这片充满奇幻色彩的迷宫中,再也没能返回。

这座魔法迷宫由 nnmm 列的魔法阵构成。有些魔法阵被神秘的魔法屏障覆盖,任何触碰者都会瞬间灰飞烟灭;而另一些魔法阵则生长着闪烁微光的魔法石,指引着安全的道路。当月光升至最高点时,森林入口(迷宫左上角)处的魔法阵会开启,而位于迷宫最深处的圣殿(迷宫右下角)则会发出璀璨的光芒,形成唯一的出口。

现在,你作为一名勇敢的年轻魔法师带着你的精灵伙伴来到了森林入口。你们需要找到一条从入口 (1,1)(1,1) 到圣殿 (n,m)(n,m) 的安全路径,每次移动可以通过上下左右相邻的房间。现在你需要判断是否存在这样一条通路。

输入格式

第一行:两个整数 nnmm,表示迷宫的行数和列数。

接下来 nn 行:每行 mm 个字符,描述迷宫布局:

  • . 表示可通行的魔法阵
  • # 表示被黑暗魔法笼罩的障碍物

输出格式

如果存在一条路径可以从迷宫的入口走到圣殿,输出 YES;否则,输出 NO

输入输出样例

输入 #1

5 5
..###
#....
#.#.#
#.#.#
#.#..

输出 #1

YES

说明/提示

样例 1 解释

该迷宫从 (1,1)(1,1) 出发,可以到达 (5,5)(5,5)。一条可行的路径为:

$(1,1) \to (1,2) \to (2,2) \to (2,3) \to (2,4) \to (3,4) \to (4,4) \to (5,4) \to (5,5)$。

因此输出 YES

数据范围

对于所有测试数据,1n501 \le n \le 501m501 \le m \le 50

迷宫只包含字符 .#,且保证起点 (1,1)(1,1) 不是屏障(即为 .)。

测试点 nn mm
1101 \sim 10 1n501 \le n \le 50 1m501 \le m \le 50