某城市正在进行应急通道规划。城市中心被划分为一个由若干方格组成的矩形区域,共有 N \times M 个方格(1 \le N, M \le 1000)。每个方格根据道路与设施状况,具有不同的通行规则。
一支应急巡查小组需要从左上角方格 (1,1) 出发,前往右下角方格 (N,M)。巡查人员每次可以向上、下、左、右四个方向移动到相邻方格之一,且只能在 N \times M 的矩阵内进行移动。
然而,不同类型的方格具有不同的通行特性:
类型 4(快速通道):
请你计算巡查小组从起点到终点所需的最少移动次数。 如果无法到达终点,输出 -1。
第一行包含两个整数 N, M,表示方格的行数和列数。
接下来 N 行,每行包含 M 个整数,表示方格类型:
数据保证起点 (1,1) 和终点 (N,M) 均为 1。
输出一个整数,表示从起点到终点的最少移动次数;若无法到达,请输出 -1。
4 4 1 0 2 1 1 1 4 1 1 0 4 0 1 3 1 1
10
5 8 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1
11
6 8 1 4 4 4 4 4 4 1 1 0 0 0 0 0 0 0 1 2 1 4 4 4 1 1 1 0 0 0 0 0 0 1 1 4 4 4 2 1 1 1 1 1 1 1 1 1 1 1
12
巡查小组的一种最优移动方案如下:
整个过程中共计 10 次移动,不存在更短方案。
对于 30\% 的数据,满足 2 \le N, M \le 50。
对于 10\% 的数据,满足读入的方格类型只有 0 和 1 两种。
对于 10\% 的数据,满足读入的方格类型没有 2 或者 没有 4。
对于 30\% 的数据,满足读入的方格类型没有 3。
对于 100\% 的数据,满足 1 \le N, M \le 1000,每个方格类型为 0 \sim 4 的整数,起点与终点保证可通行,即:为数字 1。