#P2005. 二维迷宫最短路2
二维迷宫最短路2
题目描述
卢卡斯被困在了一个二维迷宫中。
这个二维迷宫可以看成一个 行 列的网格。我们用 表示迷宫中第 行第 列的那个格子。
格子包含以下两种类型:
A:表示一种类型可以通行的格子;B:表示另一种类型可以通行的格子;#:表示不能通行的墙壁。
卢卡斯初始时在迷宫的左上角 位置,它需要移动到迷宫的右下角 位置,那里是迷宫的出口。
每次移动,卢卡斯可以从当前格子移动到上、下、左、右相邻的格子,但是不能移动到不可通行的墙壁,也不能移动到迷宫外。
移动到相同类型的格子(即:从格子 A 移动到格子 A,或从格子 B 移动到格子 B)的代价是 ;
移动到不同类型的格子(即:从格子 A 移动到格子 B,或从格子 B 移动到格子 A)的代价是 ;
求:卢卡斯从迷宫的左上角移动到迷宫的右下角的最小总代价。
输入格式
第一行,两个整数 和 ,以空格分隔,表示迷宫的行和列。
接下来 行,每行包含一个长度为 的字符串,表示这个二维迷宫。
输出格式
如果卢卡斯不存在任何可行的方案,输出一行 。
否则,输出一个整数,表示卢卡斯从迷宫的左上角移动到迷宫的右下角的最小总代价。
样例
2 3
AA#
#AB
4
5 5
ABABA
B#A#B
BA#AB
A##B#
BA#AB
19
4 3
A##
BBB
AA#
A#B
-1
说明/提示
数据规模与约定
- 对于 的数据,
- 对于 的数据,
- 对于 的数据,,起点 是可通行的格子。