#P3855. [TJOI2008] Binary Land
[TJOI2008] Binary Land
背景
Binary Land 是一款任天堂红白机上的经典游戏,讲述的是两只相爱的企鹅 Gurin 和 Malon 的故事。两只企鹅在一个封闭的迷宫中,你可以控制他们向上下左右四个方向移动。但是他们的移动有一个奇怪的规则,即如果你按“上”或“下”方向键,两只企鹅会同时向上移动或向下移动 格;如果你按“左”方向键,则 Malon 向左移动 格,同时 Gurin 向右移动 格;如果你按“右”方向键,则 Malon 向右移动 格,Gurin 向左移动 格。当然,如果某只企鹅被障碍挡住,它就不会移动了。另外,在迷宫的某些格子处有蜘蛛网,如果任何一只企鹅进入这种格子,则游戏失败。两只企鹅不会相互阻挡,即在相向运动时他们可以“穿过”彼此,也可以同时处于同一格子里。迷宫的某个格子上有一颗红心,游戏的任务就是使两只企鹅同时到达这个格子。

题目描述
请编写程序找出完成任务所需的最少的操作步数。如果无法完成目标,输出 no。
输入格式
第一行包含两个整数 表示迷宫的长和宽。
按下来有 行,每行包含 个字符,描述了一个迷宫。其中 # 表示企鹅不能通过的障碍物,X 表示蜘蛛网,. 表示空地,G 表示 Gurin 的初始位置,M 表示 Malon 的初始位置,T 表示终点位置。
输入数据保证标有 G,M,T 的格子分别只有一个,保证企鹅不可能走到迷宫以外。
输出格式
输出只有一行,为最少的操作步数。如果不能完成任务,输出 no。
4 7
#######
#..T..#
#G##M##
#######
4
提示
满足要求的一个操作序列为:上-右-左-左。
。