机器人迷宫
目录
题目描述
一个机器人需要巡逻一个m*n的迷宫(m行n列),一个单元格(i,j)表示第i行第j列,机器人每次只能从一个格子移到另一个格子,并只能像(i+1,j),(i-1,j),(i,j+1),或(i,j-1)这样移动到相邻的格子上。
网格中的一些格子中含有障碍物。为了穿过到含有障碍的格子,机器人必须切换到涡轮增压模式。因此,机器人不能连续穿过超过含k个障碍的网格。
你的任务是写一个程序,使得机器人从(1,1)到第(m,n)个格子的最短路径。输入保证起点与终点无障碍。
格式要求
输入格式
第一行:一个整数T,表示测试组数,每组测试数据的格式为:
第1行:两个整数m,n,表示迷宫的行数和列数, 第2行:一个整数k(k 小于 m 与n),表示允许机器人连续穿越的格子数。最后有m行n列个数字0 和 1,其中1表示第(i,j)个格子有障碍,0表示无障碍。
输出格式
每组数据一个整数表示最短路的长度。如果不能到达则输出-1。
样例
输入
3
2 5
0
0 1 0 0 0
0 0 0 1 0
4 6
1
0 1 1 0 0 0
0 0 1 0 1 1
0 1 1 1 1 0
0 1 1 1 0 0
2 2
0
0 1
1 0
输出
7
10
-1
数据大小
测试组数保证小于30
对于75%的数据 1 <= m,n <= 200
对于另外25%的数据 200 < m,n <= 500
样例说明
测试数据1