2518: 二哥找宝箱

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:3 解决:3

题目描述

作为一个强迫症患者,二哥在走游戏里的迷宫时一定要把所有的宝箱收集齐才肯罢
休。
现在给你一个 N×M 的迷宫,里面有障碍、空地和宝箱,二哥在某个起始点,每一
步二哥可以往上下左右走, 当然前提是没有走出迷宫并且走到的点不是障碍。如果二
哥走到了某个为宝箱的点,那么这个宝箱就被他收集到了,然后此处变为空地。
现在你需要计算二哥最少需要走多少步才能收集齐所有的宝箱。

输入

输入共有两行。
第一行一个两个正整数 N 和 M,表示迷宫大小。
接下来 N 行,每行 M 个整数,第 i+1 行的第 j 个整数表示迷宫第 i 行第 j 列的情况,
0 表示空地,-1 表示障碍,1 表示宝箱,2 表示二哥的起始点。保证 2 只有一个。

输出

一行一个整数,表示二哥最少的步数。如果二哥无法收集齐所有宝箱,输出-1。

样例输入 复制

3 5
1 -1 1 -1 2
0 -1 0 -1 0
0 0 0 0 0

样例输出 复制

12

提示

40%
宝箱只有一个;
100%
0<N,M<=100, 宝箱个数不超过 5。