#P2199. 最后的迷宫

    ID: 1173 Type: RemoteJudge 1000ms 128MiB Tried: 4 Accepted: 0 Difficulty: 3 Uploaded By: Tags>搜索枚举广度优先搜索,BFS队列

最后的迷宫

题目背景

哈利•波特作为三强争霸赛的第四名选手,历尽艰险闯到了最后一关——迷宫。

现在,迷宫里只剩下哈利和塞德里克了,哈利只有在塞德里克前面拿到奖杯,才能赢得比赛。哈利只要能看到奖杯,就可以用飞来咒拿到它,所以,现在的问题是哈利如何能尽早地看到奖杯。

题目描述

哈利的视力非常好,他能从迷宫的一端沿直线看到迷宫的另一端(但他只能看八个方向——东北,东,东南,南,西南……),而且他跑得非常快,跑一步(向上、下、左、右移动一格)只需要 1s1\text{s}。但迷宫是不透光的,而且,要烧掉迷宫的墙也不容易,所以哈利决定绕到一个能够看到奖杯的地方。现在,哈利希望你能帮他确定最短需要多长时间才能拿到奖杯。

输入格式

第一行为 22 个数 N,MN,M 表示迷宫的规模(NN 为高,MM 为宽)

接下来是 N×MN \times M 的迷宫,O\texttt{O} 表示空地,X\texttt{X} 表示墙。

最后是多对数据,分别是奖杯坐标及哈利的坐标(显然不可能在墙上),每对占一行,00 为结束标志。

输出格式

根据每对数据,计算哈利拿到奖杯的最短时间,每对一行。如果魔法部有意难为选手,用墙将奖杯包围了起来,输出 Poor Harry\texttt{Poor Harry}

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

1
Poor Harry

提示

对于 30%30\% 的数据,有 N×M100N\times M\le100

对于 60%60\% 的数据,有 N×M1600N\times M\le1600

对于 100%100\% 的数据,有 N×M16384N\times M\le16384

询问数据对数不超过 512512