Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 26896 Accepted Submission(s): 9531
Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is described as a N * M (N, M <= 200) matrix. There are WALLs, ROADs, and GUARDs in the prison.
Angel’s friends want to save Angel. Their task is: approach Angel. We assume that “approach Angel” is to get to the position where Angel stays. When there’s a guard in the grid, we must kill him (or her?) to move into the grid. We assume that we moving up, down, right, left takes us 1 unit time, and killing a guard takes 1 unit time, too. And we are strong enough to kill all the guards.
You have to calculate the minimal time to approach Angel. (We can move only UP, DOWN, LEFT and RIGHT, to the neighbor grid within bound, of course.)
Input First line contains two integers stand for N and M.
Then N lines follows, every line has M characters. “.” stands for road, “a” stands for Angel, and “r” stands for each of Angel’s friend.
Process to the end of the file.
Output For each test case, your program should output a single integer, standing for the minimal time needed. If such a number does no exist, you should output a line containing “Poor ANGEL has to stay in the prison all his life.”
Sample Input
7 8 #.#####. #.a#..r. #..#x... ..#..#.# #...##.. .#...... ........Sample Output 13
Author CHEN, Xue
Source
————————————————————————————————————————————
复习的时候翻出来的题,当初写的时候有参考了别人的模板,现在自己写了一遍,感觉这个形式写比较容易理解。顺便给题目加了注释。
———————————————————————————————————————————— 几个注意点: 1.队列和优先队列的默认排列方式在本题中均不适用。(因为有警卫‘x’)所以需要重载 2.定义结构体类型的时候不要同时定义变量,因为编译器的问题,有些OJ上会报错。
————————————————————————————————————————————