马里奥又一次来到了游戏世界。
这次他的目标是在一个 N \times M 大小的矩阵中,以最短的时间完成:找到一份宝藏并将宝藏带到城堡中交给国王的任务。
马里奥在游戏地图中,只能沿着上下左右四个方向移动,每移动一次需要消耗一个单位的时间。
地图中的标示如下:
0 代表空地。1 代表陷阱,马里奥一定不会走到陷阱中。2 代表马里奥的出发位置。3 代表城堡。4 代表宝藏。游戏中的宝藏可能多个位置都有,马里奥只需要找到其中一个位置的宝藏,带给国王,马里奥在没有找到宝藏之前,不允许经过城堡所在的位置。
游戏中马里奥的出发位置和城堡的位置都是唯一的。
第 1 行输入两个整数 N 和 M,表示地图的大小。
接下来 N 行,每行输入 M 个 0 \sim 4 之间的整数,代表地图的每个位置的标示。
输出一个整数,代表马里奥完成任务需要的最短时间。
5 6 2 0 0 0 0 0 1 1 1 1 0 1 0 0 3 0 0 0 0 1 1 1 0 4 4 0 0 0 0 0
12
6 8 3 0 0 0 1 4 4 4 0 1 1 0 0 1 1 0 0 1 4 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 4 0 0 0 0 0 0 2
14
8 10 1 2 0 0 0 4 1 0 0 0 0 0 0 1 4 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 3 1 0 1 0 0 1 0 1 0 0 0 0 0 4 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1
18
马里奥从 1,1 点出发,向右一直走到 2,5 点,再向下走到 4,5 点,再向右走到 4,6 点,找到财宝。
然后向上走到 3,6 点,再向左一直走到 3,3 点,到达城堡位置。
有 10\% 的数据,满足宝藏的位置在地图中唯一。
对于 40\% 的数据,满足 1 \le N,M \le 10。
对于 100\% 的数据,满足 1 \le N,M \le 800。
测试数据保证马里奥在游戏中一定能完成任务。
| 时间限制 | 1 秒 |
| 内存限制 | 512 MB |
| 提交次数 | 299 |
| 通过人数 | 99 |
| 金币数量 | 0 枚 |
| 难度 | 基础 |