单挑女飞贼
描述
在一个夜黑风高,伸手不见五指的深夜,睡梦中的林月如突然听到房外一阵躁动。她出去一看,发现一个女飞贼抢了一个古董商的包袱。
"站住!"
"那你为什么不来追我?"
"因为程序设计,在李大哥来之前,我不能追你。"
"那李逍遥为什么不来呢?"
"大概程序出bug了吧"
………………………………………………
终于,在等了一个又一个时辰后,林月如终于忍不住了,开始向女飞贼发起进攻。
"喂!你为什么可以动???"
"这大概也是一个bug吧!"
"不公平啊!"
"废话少说。"
已知林月如和女飞贼站在一个矩阵中,矩阵中有某些障碍物不可穿越。月如使出的铜钱镖可攻击8个方向,但不可穿越障碍物(可视为不能穿墙的重狙)。每个单位时间,月如可向上下左右4个方向移动一格,攻击不浪费时间。当然,月如想尽快结束这场无聊的战斗,所以她想在最短的时间内消灭女飞贼。
格式
输入格式
第一行为2个数N,M表示矩阵的规模(N为高,M为宽)。
接下来是N*M的矩阵,O表示空地,X表示障碍物。
下面是若干行数据,每行为一对数据,分别是女飞贼的位置和林月如的位置,显然她们都不可能在障碍物上。
以"0 0 0 0"为输入结束标志。
输出格式
每一组数据输出一行,仅一个整数,表示能消灭掉女飞贼的最短时间。
显然若能直接打到女飞贼,则时间为0。
若无法消灭,则输出"Impossible!"。(不含引号)
样例1
样例输入1
3 4
OXXO
XXOO
XOOO
3 2 2 4
3 3 1 1
0 0 0 0
样例输出1
1
Impossible!
限制
1s
提示
对于30%的数据,有N*M<=100
对于50%的数据,有N*M<=400
对于100%的数据,有N*M<=20000
对于100%的数据,测试数据组数不超过20组
来源
经典问题