#2698. 秘密通道
秘密通道
题目描述
有一副的地图,有块地,每块是下列四种中的一种: 墙:用 表示,墙有个面,分别是前面,后面,左面,右面。 起点:用表示,为主角的起点,是一片空地。 终点:用表示,为主角的目的地,是一片空地。 空地:用 . 表示。 其中除了墙不能穿过,其他地方都能走。
主角有以下种操作:
移动到相邻的前后左右的地方,花费一个单位时间。
向前后左右其中一个正方向发射子弹,子弹沿直线穿过,打在最近的一堵墙的一面,然后墙的这面就会形成一个开口通往秘密通道。同一时间最多只能有两个开口,若 出现有个开口,出现时间最早的开口会立即消失。该操作不用时间。
若已经有两个开口,而且相邻的位置是墙,所正对的墙面也刚好有开口,主角就能从这个开口进去,进入秘密通道,从另外一个开口跳出来,跳到开口正对的空地,这 个过程花费一个单位时间。
地图四周都是墙,问主角最少用多少时间从走到。
输入格式
第一行输入两个正整数。
接下来行,每行个字符描述地图。
输出格式
输出个整数,表示最短时间完成路途。如果无解输出
样例
输入样例1
4 4
####
#.F#
#C.#
####
输出样例1
2
输入样例2
6 8
########
#.##..F#
#C.##..#
#..#...#
#.....##
########
输出样例2
4
输入样例3
4 5
#####
#C#.#
###F#
#####
输出样例3
nemoguce
提示
样例解释
总共用到次操作,时间之和为。如下图所示
向左射一枪,在的右面出现开口。
向下射一枪,在的上面出现开口。
向左从进入秘密通道,从中出来,到达。用单位时间。
向右射一枪,在的左面出现开口,右面的开口消失。
走进的开口,出来到。用单位时间。
向上射一枪,在的下面出现开口。
经过秘密通道,走到。用单位时间。
走到终点。用单位时间。
数据范围
对于的数据, 。
对于的数据, 。