独轮车
时间限制:1秒 内存限制:256M
【题目描述】
独轮车是一种仅有一个轮子的特殊自行车。他的轮子被等分成 5 个扇形,分别涂上一种不同的颜色。现在有一个人骑自行车行驶在 \(M×N\) 的网格平面上。每个格子的大小恰好使得当车从一个格子骑到下一个格子时,轮子恰好转过一个扇形。
如下图所示,当轮子在 1 号格子的中心时,蓝色扇形的外弧线中线刚好于地面接触。当它移动到下一个格子(2 号格子)的时候,白色扇形的外弧线于地面接触。
有些各自中有障碍,所以车子不能通过这些格子。骑车人从某个格子出发,希望用最短的时间移动到目标格。在任何一个格子上,他要么骑到下一个格子,要么左转或者右转 90 度。其中每项动作恰好需要 1 秒来完成。初始时,他面朝北且绿色扇形贴着地面。到达目标格时,也必须是绿色扇形贴着地面,但朝向无限制。如下图所示。
【输入格式】
第一行包含两个整数 \(M\) 和 \(N\),表示迷宫的行数和列数,接下来是网格的描述,用 \(M\) 行长度为 \(N\) 的字符串来表示。字符 # 表示一个障碍方格,其他方格均可通行。骑车人的起点用 S 表示,终点用 T 表示。
【输出格式】
输出测试数据编号和到达目标格的最短时间(单位:秒)。如果无法到达,输出“destination not reachable”。
【输入输出样例1】
Input
1 3
S#T
Output
destination not reachable
【输入输出样例2】
Input
10 10
#S.......#
#..#.##.##
#.##.##.##
.#....##.#
##.##..#.#
#..#.##...
#......##.
..##.##...
#.###...#.
#.....###T
Output
minimum time = 49 sec
【数据限制】
对于 \(100\%\) 的数据,\(1≤M,N≤100\)。
【来源】
Mr.he