#P2312. Battle City

Battle City

题目描述

我们中的许多人小时候玩过“坦克大战”游戏,有些人(比如我)甚至现在仍经常在电脑上玩。

这里讨论的是该游戏的一个简单版本。给定一个仅由空地、河流、钢铁墙和砖墙组成的地图。你的任务是假设没有敌人干扰的情况下,尽快获得奖励(如下图所示)。

你的坦克无法穿过河流或墙壁,但可以通过射击摧毁砖墙。击中砖墙时,它会变为空地;但如果击中钢铁墙,则不会对墙造成任何损坏。在每一回合中,你可以选择移动到相邻的(四个方向,非八个方向)空地,或在不移动的情况下向四个方向之一射击。子弹会沿该方向直行,直到飞出地图或击中墙壁。如果子弹击中砖墙,该墙会消失(即在本回合内)。

给定地图描述、坦克位置和目标位置,你至少需要多少回合才能到达目标?

输入

输入包含多个测试用例。每个测试用例的第一行包含两个整数MMNN2M,N3002 \leq M, N \leq 300)。接下来的MM行每行包含NN个大写字母,每个字母是Y'Y'(你的坦克)、T'T'(目标)、S'S'(钢铁墙)、B'B'(砖墙)、R'R'(河流)或E'E'(空地)之一。Y'Y'T'T'各仅出现一次。当M=N=0M = N = 0时表示输入结束,无需处理。

输出

对于每个测试用例,请在一行中输出你至少需要的回合数。如果无法到达目标,则输出1-1

样例输入

3 4  
YBEB  
EERE  
SSTE  
0 0  

样例输出

8  

来源

POJ 月刊, 鲁小石