#P1576. Igor and his way to work

Igor and his way to work

题目描述

伴随着闹钟的铃声,财政分析家 Igor 匆忙起来赶去工作。他吃完早餐后就坐到了他的车上。不幸的,当他打开他的 GPS 导航时,发现在他所居住的小镇 Bankopolis 中的一些道路,由于道路施工而关闭。更不幸的是,车的方向盘有点问题,所以在他去他的银行办公室的途中,最多只能转两次弯

小镇 Bankopolis 可以看做是一个 nnmm 列的网格图,Igor 需要找到一条从家到银行的道路,这条道路转弯次数最多为 22 次,且不能经过正在维修的道路,或者你可以告诉他不能到达,他应该在家工作。转弯定义为 Igor 的车改变一次方向。Igor 的车只能向上,下,左,右四个方向行驶。在最开始的时候,Igor 的车可以选择任何方向。因为 Igor 仍然在睡觉,所以请你帮帮他。

输入格式

第一行包含两个正整数 nnmm,表示 Bankopolis 小镇的行数和列数。

接下来 nn 行,每行 mm 个字符,用于描述一个 n×mn\times m 的矩阵。

可能会出现以下字符:

  • .\texttt{.}:一个可行的道路;
  • *\texttt{*}:正在施工的道路;
  • S\texttt{S}:Igor 的家;
  • T\texttt{T}:银行办公室的位置。

保证 S\texttt{S}T\texttt{T} 出现且只出现一次。

输出格式

如果能够到达,输出 YES\texttt{YES};否则输出 NO\texttt{NO}

5 5
..S..
****.
T....
****.
.....
YES
5 5
S....
****.
.....
.****
..T..
NO