#P912. 数字迷宫

数字迷宫

题目描述

给定一个 n×mn \times m 的网格数字迷宫,每个网格上有一个数字,第 ii 行、第 jj 列网格上的数字为 a(i,j)a_{(i,j)} ,表示走到这个格子后,下一次移动可以往上下左右任一方向走 a(i,j)a_{(i,j)} 格。

请问,若从网格左上角 (1,1)(1,1) 位置走到右下角 (n,m)(n,m) 位置,最少需要走多少次?

输入格式

输入第一行,两个正整数分别表示 n,mn,m 接下来的第 22 行至第 n+1n+1 行,每行 mm 个数字,用空格隔开,其中第 i+1i+1 行、第 jj 列的数字表示 a(i,j)a_{(i,j)}

输出格式

输出一个整数,表示最少步数,若无法达到右下角,则输出 No Solution

3 4
1 2 3 4
1 1 1 1
2 2 2 2
3

样例解释 1

(1,1)-->(1,2)-->(3,2)-->(3,4)

数据范围

  • 对于 30%30\%的数据,1n,m101 \leq n,m \leq 10
  • 对于 60%60\%的数据,1n,m1001 \leq n,m \leq 100
  • 对于 100%100\%的数据,1n,m1031 \leq n,m \leq 10^31aimax(n,m)1 \leq a_i \leq max(n,m)