#P4668. [BalticOI 2011] Treasures and Vikings (Day1)

[BalticOI 2011] Treasures and Vikings (Day1)

Description

你有一张藏宝图,这张地图被划分为一个 N×MN \times M 的网格。一个网格可能是海洋或者是岛屿的一部分。此外,地图上标出了宝藏和占据一个(海洋)方格的敌方维京船。最后,为了方便起见,你还标出了你自己的位置。

现在你必须设置一条固定的路线去获得宝藏。路线必须从你的起始位置开始,以宝藏为终点,并由一系列移动组成。在每次移动中,你只能移动到一个(水平或垂直)相邻的非岛屿方格。但要小心:维京船可能会跟随你,使用相同的移动方式!在你按照路线进行每次移动后,维京船可能会移动也可能不动。你的移动和维京船的反应合称为一轮。

在每轮之后,进行以下检查:

  • 如果你与维京船在同一条直线上(你与维京船在同一垂直或水平线上,并且中间只有海洋),你就死了。
  • 如果你没有死并且在宝藏点上,你就获得了宝藏。

编写一个程序来决定是否可以提前设置一条固定路线,使你可以通过这条路线获得宝藏,并且不会被维京人杀死——无论维京船如何移动。

Input Format

输入的第一行包含两个整数 NNMM,表示地图的尺寸。接下来的 NN 行中的每一行包含 MM 个字符。每个字符描述地图上的一个方格,可以是 .(海洋)、I(岛屿的一部分)、V(维京船)、Y(你的位置)或 T(宝藏)。VYT 各出现一次。

Output Format

输出的唯一一行必须包含字符串 YES,如果可以设置一条路线来获得宝藏;否则输出 NO

5 7
Y.....V
..I....
..IIIII
.......
...T...
YES
5 7
Y....V.
..I....
..IIIII
.......
...T...
NO
2 3
.YT
VII
NO

Hint

样例解释 1

路线是:向下走三次,向右走三次,最后再向下走一次。

数据范围

对于 50%50\% 的数据,1N,M2001 \le N,M \le 200

对于所有数据,1N,M7001 \le N,M \le 700

题面翻译由 ChatGPT-4o 提供。