T308113 「MYOI-R1」幻想迷宫

题目背景

![h](https://cdn.luogu.com.cn/upload/image_hosting/v00lvb03.png) 你有没有想过,也许你来了,就……回不去了?

题目描述

在幻想世界里,有一座有名的迷宫,叫做「幻想迷宫」。这个迷宫是由 $n$ 个边长为 $m$ 的小迷宫组成的,迷宫的编号分别为 $1,2,3,…,n$。每个小迷宫都由 $m \times m$ 个方格组成的,第 $i$ 行第 $j$ 个方块的编号为 $(i,j)$,每个方格的构成有 $3$ 种可能:`.`、`*` 和数字。 - `.`:为空地,可向当前方块移动。 - `*`:为石头,不可向当前方块移动。 而当一个方格中为一个数字时,这就表明当前方块为一个 “传送门” ,移动到这个方块上的人将传送至编号为 $i$ 的小迷宫的左上角的位置,也就是第 $i$ 个迷宫的 $(1,1)$ 位置。**特别的**,如果当前位置为 `*`,那么**传送无效**,你需要**回到移动至传送门的那一步**并选择其他方式进行移动。 同时,在这 $n$ 个迷宫中,有一个点为 `@`,这个点表示出口,即只要到达该点,就能走出迷宫。 你来到了迷宫,你需要从第 $1$ 个小迷宫的左上角开始行走,每次只能向下或者向右走,直到无法行走或者走出迷宫为止。若能够走出迷宫,输出最小的行走步数,否则输出 $-1$。

输入格式

第一行,共两个整数 $n,m$,表示小迷宫数量及其边长。 接下来 $n \times m $ 行,每行会有 $m$ 个字符,为 $n$ 个 $m \times m$ 的矩阵,第 $i$ 个矩阵的编号为 $i$。

输出格式

一行,共一个整数,若能够走出迷宫,输出最小的行走步数,否则输出 $-1$。

说明/提示

#### 样例 1 解释 样例一的最优路径: 第一个迷宫到第二个迷宫到第三个迷宫。 最优路径的坐标: 第一个迷宫: $(1,1)\Longrightarrow(1,2)\Longrightarrow(1,3)\Longrightarrow(2,3)\Longrightarrow(3,3)$。 第二个迷宫: $(1,1)\Longrightarrow(2,1)\Longrightarrow(2,2)$。 第三个迷宫: $(1,1)\Longrightarrow(2,1)\Longrightarrow(3,1)\Longrightarrow(3,2)$。 共:$4+2+3=9$ **注**:以上坐标均以左上角为 $(1,1)$,右下角为 $(m,m)$。 ### 数据规模与约定 注:分值中的 $a \times b$ 形式表示共 $a$ 个测试点,每个测试点 $b$ 分。 | Subtask | 数据范围 | 特殊性质 | 分值 | | :----------: | :----------: | :----------: | :----------: | | $0$ | $n\le 5,m\le 100$ | 无 | $4\times 5$ | | $1$ | $n\le 9$ | $ans\ge 0$ | $4\times 8$ | | $2$ | $m\le10^3$ | 无 | $4\times 12$ | 对于 $100\%$ 的数据,$1≤n≤9$,$1≤m≤1000$。