#P3855. [TJOI2008] Binary Land

    ID: 4554 远端评测题 1000ms 125MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>动态规划 DP搜索2008各省省选广度优先搜索 BFS天津

[TJOI2008] Binary Land

背景

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

题目描述

请编写程序找出完成任务所需的最少的操作步数。如果无法完成目标,输出 no。

输入格式

第一行包含两个整数 R,CR,C 表示迷宫的长和宽。

按下来有 RR 行,每行包含 CC 个字符,描述了一个迷宫。其中 # 表示企鹅不能通过的障碍物,X 表示蜘蛛网,. 表示空地,G 表示 Gurin 的初始位置,M 表示 Malon 的初始位置,T 表示终点位置。

输入数据保证标有 G,M,T 的格子分别只有一个,保证企鹅不可能走到迷宫以外。

输出格式

输出只有一行,为最少的操作步数。如果不能完成任务,输出 no。

4 7
#######
#..T..#
#G##M##
#######

4

提示

满足要求的一个操作序列为:上-右-左-左。

3≤R,C≤303 ≤ R, C ≤ 30。