问题 3505 --单挑女飞贼

3505: 单挑女飞贼

题目描述

  在一个夜黑风高,伸手不见五指的深夜,睡梦中的林月如突然听到房外一阵躁动。她出去一看,发现一个女飞贼抢了一个古董商的包袱。

"站住!"
"那你为什么不来追我?"
"因为程序设计,在李大哥来之前,我不能追你。"
"那李逍遥为什么不来呢?"
"大概程序出bug了吧"
……………………………………………… 
终于,在等了一个又一个时辰后,林月如终于忍不住了,开始向女飞贼发起进攻。

"喂!你为什么可以动???"
"这大概也是一个bug吧!"
"不公平啊!"
"废话少说。"

已知林月如和女飞贼站在一个矩阵中,矩阵中有某些障碍物不可穿越。月如使出的铜钱镖可攻击8个方向,但不可穿越障碍物(可视为不能穿墙的重狙)。每个单位时间,月如可向上下左右4个方向移动一格,攻击不浪费时间。当然,月如想尽快结束这场无聊的战斗,所以她想在最短的时间内消灭女飞贼。

输入

第一行为2个数N,M表示矩阵的规模(N为高,M为宽)。 
接下来是N*M的矩阵,O表示空地,X表示障碍物。 
下面是若干行数据,每行为一对数据,分别是女飞贼的位置和林月如的位置,显然她们都不可能在障碍物上。 以" 0  0  0  0" 为输入结束标志。

输出

每一组数据输出一行,仅一个整数,表示能消灭掉女飞贼的最短时间。 
显然若能直接打到女飞贼,则时间为0。 若无法消灭,则输出" Impossible!" 。(不含引号)

样例输入输出

输入#1 复制
3 4
OXXO
XXOO
XOOO
3 2 2 4
3 3 1 1
0 0 0 0
输出#1 复制
1
Impossible!

提示

对于30%的数据,有N*M< =100 
对于50%的数据,有N*M< =400 
对于100%的数据,有N*M< =20000 
对于100%的数据,测试数据组数不超过20组

序号 标题 作者 发表时间 费用 订购数 操作