#bzoj4290. 传送门
传送门
题目描述
在一个迷宫中有一个蛋糕。作为一个吃货,非常想吃到这块蛋糕。现在手里有这个迷宫的地图,该地图是一个行列的网格图,每个格子包含了下述种字符中的一种:
#表示这里是墙砖,不能通过;.表示这里是空地,可以通过;S表示的初始位置;C表示蛋糕的位置。
只能在空地上行走,并且只能从一个格子走到与这个格子有公共边的相邻格子上。另外,整个地图的四周都是被墙砖所环绕的。
为了能更快吃到蛋糕,不知从哪里获得了一把次元枪,这把枪可以用来制造传送门。该枪的使用说明如下:
- 在任何时候,可以选择上下左右四个方向中的一个开一枪。当她向一个方向开枪之后,子弹会撞到这个方向上第一个遇到的墙砖,并在这个墙砖面向她的面上开启一个传送门。
- 由于能量限制,在同一时刻最多存在两个传送门。如果已经存在两个传送门,那么当再开枪时,其中一个传送门会被回收用于补充能量,回收哪一个由自己决定。当向某个传送门开枪时,会有一个新的传送门取代它,即在一块墙砖的一个面上同时只能存在一个传送门。
- 当存在两个传送门时,可以进入其中任意一个传送门,然后会从另外一个传送门走出。
由于枪法一流,所以开枪是不耗时的。从一个格子走到任意一个相邻格子的耗时为,穿越传送门的耗时也为。
现在把地图给了你,她想知道她吃到蛋糕的最少耗时是多少,你不忍心拒绝这样一位少女的请求,所以你绞尽脑汁也要把这个问题解决。
输入格式
第一行两个整数。
接下来行每行个字符,表示地图。S和C均只会出现一次。
输出格式
第一行一个整数,表示最少耗时。
样例
4 4
.#.C
.#.#
....
S...
4
数据范围与约定
对于的数据,, 一定能吃到蛋糕。