题目描述
可以将题目简化为二维平面坐标系中,房间是一个边长为303030的正方形,以房间的左下角为原点
yuxxyuxxyuxx和箱子的合法位置应为(px,py),(bx,by)(p_x,p_y),(b_x,b_y)(px,py),(bx,by)(1≤px,py,bx,by≤30)(1\leq p_x,p_y,b_x,b_y \leq 30 )(1≤px,py,bx,by≤30)
yuxxyuxxyuxx的出发点为(x1,y1)(x_1,y_1)(x1,y1),yuxxyuxxyuxx的任务是把箱子移动到目标位置 (x2,y2)(x_2,y_2)(x2,y2),当前箱子的位置为(x3,y3)(x_3,y_3)(x3,y3)
房间中有 mmm 个不可移动的石柱 (石柱的直径很小,只会阻挡所在位置的路径)
石柱的坐标分别为(px1,py1)(px2,py2)...(pxm,pym)(px_1,py_1)(px_2,py_2)...(px_m,py_m)(px1,py1)(px2,py2)...(pxm,pym)
yuxxyuxxyuxx和箱子都必须待在房间内,yuxxyuxxyuxx只能沿着与x,yx,yx,y轴平行方向移动,当箱子在yuxxyuxxyuxx的正前方,并且两者相邻的时候才能被推动,此时两者可以同时向前方移动相同的距离。
由于yuxxyuxxyuxx想当肥宅,不想多走一步路,他想知道完成任务的最短路径是多少。
注:相邻指的是yuxxyuxxyuxx和箱子的位置为(px,py),(bx,by)(p_x,p_y),(b_x,b_y)(px,py),(bx,by)时,
(px=bx&&∣py−by∣=1)(p_x=b_x \&\& \vert p_y-b_y \vert =1)(px=bx&&∣py−by∣=1)或者(py=by&&∣px−bx∣=1)(p_y=b_y \&\& \vert p_x-b_x \vert =1)(py=by&&∣px−bx∣=1)
输入
第一行六个整数,代表出发点、目标位置和箱子的位置,不同整数间用空格隔开
x1x_1x1 y1y_1y1 x2x_2x2 y2y_2y2 x3x_3x3 y3y_3y3(1≤x1,y1,x2,y2,x3,y3≤30)(1\leq x_1,y_1,x_2,y_2,x_3,y_3 \leq 30)(1≤x1,y1,x2,y2,x3,y3≤30)
第二行输入一个整数m(0≤m≤200)m(0\leq m \leq 200)m(0≤m≤200)
接下来mmm行,每行有两个整数,用空格隔开,表示障碍的坐标(pxi,pyi)(1≤pxi,pyi≤30)(px_i,py_i)(1\leq px_i,py_i \leq 30)(pxi,pyi)(1≤pxi,pyi≤30)
(保证石柱、出发点、目标位置以及箱子的位置之间不会重合,不会出现坐标相同的石柱)
输出
输入一个整数表示需要走的最短路径长度 如果无法到达目标位置,输出-1
样例输入 Copy
3 3 4 4 5 5
0
样例输出 Copy
9
提示
对于第一个样例,yuxxyuxxyuxx可以走的最短路径之一是
(4,3),(5,3),(6,3),(6,4),(6,5),(5,5),(5,6),(4,6),(4,5)(4,3),(5,3),(6,3),(6,4),(6,5),(5,5),(5,6),(4,6),(4,5)(4,3),(5,3),(6,3),(6,4),(6,5),(5,5),(5,6),(4,6),(4,5)
此时,对应的箱子位置为
(5,5),(5,5),(5,5),(5,5),(5,5),(4,5),(4,5),(4,5),(4,4)(5,5),(5,5),(5,5),(5,5),(5,5),(4,5),(4,5),(4,5),(4,4)(5,5),(5,5),(5,5),(5,5),(5,5),(4,5),(4,5),(4,5),(4,4)
所以路径长度为999