2381: 超级龙骑

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:17 解决:2

题目描述

当所有人终于费力的将狗狗排成一条直线之后,抽筋流高手又布置了另一个任务。他让每个人操作一个可爱的超级龙骑,找寻一条最短了路径去毁掉一个特殊的建筑物(Crystal’s Love——简称CL)。

这个龙骑之所以叫做超级龙骑,是因为他的射程为无穷大。然而,这种龙骑却只能打上,下,左,右,左上,右上,左下,右下八个方向,而且这种龙骑的攻击不可穿墙。即是说如果他攻击的目标在墙后:

龙骑————————————墙————————目标

那么这个目标就无法被攻击到。

现在给出一张N*M的地图,然后给出龙骑的初始位置(X1Y1),再给出CL的位置(X2Y2)。假设龙骑移动一步需要单位1的时间。龙骑发炮需要的时间<0.000000000001,即是说龙骑消灭CL不需要时间。

现在请你求出最少需用多少时间才能消灭CL

输入

每组数据第一行为2个数N,M表示矩阵的规模(N为高,M为宽).

接下来是N*M的矩阵,O表示空地,X表示障碍物.

最后是多对数据分别是目标坐标及我方步兵的坐标(显然不可能在障碍物上),每对占一行,0为结束标志.

输出

能到达能打击到目标的位置的最短步数(显然若能直接打到则时间为0),若没有这样的位置存在则输出'Impossible!'.

样例输入 复制

3 4
OXXO
XXOO
XOOO
3 2 2 4
3 3 1 1
0 0 0 0

样例输出 复制

1
Impossible!

提示

对于30%的数据,N*M<=100

对于50%的数据,N*M<=400

对于100%的数据,N*m<=1600

(其实这题最大数据 <= 150*150, 上面那是坑你的)