#Lutece0853. 一个简单的走迷宫问题

一个简单的走迷宫问题

Migrated from Lutece 853 一个简单的走迷宫问题

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

这是一个网格迷宫问题,地图的左上角为00(0,0),坐标i,j(i,j)表示iijj列。有一个人,他在一个迷宫里,他要去一个目标位置。他站在网格的交叉点上,障碍物在网格内部。他可以用不同的速度前进,每秒可以走11格到33格。也可以花费一秒的时间向左或向右转。同时他不能撞到障碍物,也不能半个身体在地图外面。现在,他最短要多少秒才能走到目标位置。人的体积是一个半径为0.50.5格的圆。

Input

题目有多组测试数据。每组包含以下内容:

第一行包含两个整数n,m(0n,m50)n,m(0 \leq n,m \leq 50)。表示地图的行数和列数。n,mn,m0 0时表示结束。

接下来nn行,每行包含mm0011的整数。11表示障碍物,00表示没有障碍物。

接下来一行包含55个整数,x1,y1,x2,y2,wx_1,y_1,x_2,y_2,w。分别表示初始位置和目标位置,以及初始方向。01230、1、2、3分别表示上右下左。

题目保证输入合法。

Output

输出仅包含一个整数,如果无解输出-1,否则输出最短的时间(单位:秒)。

Samples

9 10
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1 0
7 2 2 7 2
9 10
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1 0
7 2 2 7 2
0 0
12
12

Note

样例如图所示:(蓝色点为出发点,红色点为目标点,红线为路径)

title

Resources

2014 UESTC Training for Search Algorithm