25年1月-B组(才俊)
Contest is over.
开始 2025-01-04 08:00:00
当前 2026-03-10 14:32:50
结束 2025-01-05 23:00:00

D. 马里奥的宝藏

题目描述

马里奥又一次来到了游戏世界。

这次他的目标是在一个 N \times M 大小的矩阵中,以最短的时间完成:找到一份宝藏并将宝藏带到城堡中交给国王的任务。

马里奥在游戏地图中,只能沿着上下左右四个方向移动,每移动一次需要消耗一个单位的时间

地图中的标示如下:

  • 0 代表空地。
  • 1 代表陷阱,马里奥一定不会走到陷阱中。
  • 2 代表马里奥的出发位置。
  • 3 代表城堡。
  • 4 代表宝藏。

游戏中的宝藏可能多个位置都有,马里奥只需要找到其中一个位置的宝藏,带给国王,马里奥在没有找到宝藏之前,不允许经过城堡所在的位置

游戏中马里奥的出发位置和城堡的位置都是唯一的。

输入

1 行输入两个整数 NM,表示地图的大小。

接下来 N 行,每行输入 M0 \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,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 枚
难度 基础
提交