#include<bits/stdc++.h>
using namespace std;
vector<vector<bool>>dt;
vector<vector<bool>>see;
vector<vector<bool>>book;
int pos[]={0,0,0,1,1,1,-1,-1,-1},pos2[]={0,1,-1,1,0,-1,1,0,-1},p[]={0,1,-1,0,0},p2[]={0,0,0,1,-1};
int n,m;
void qk(){
see.clear();
book.clear();
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char x;
cin>>x;
if(x=='X')dt[i][j]=1;
}
}
queue<int>qx;queue<int>qy;queue<int>qs;
while(1){
aa:int x,y,x2,y2;
cin>>x>>y>>x2>>y2;
if(x==y&&x2==y2&&x==x2&&x==0)break;
for(int k=1;k<=8;k++){
int i=x,j=y;
while(!dt[i][j]&&i>0&&i<=n&&j>0&&j<=m){
see[i][j]=1;
// cout<<i<<' '<<j<<endl;
i+=pos[k],j+=pos2[k];
}
}
qx.push(x2);qy.push(y2);qs.push(0);book[x2][y2]=1;
while(!qx.empty()){
int i=qx.front(),j=qy.front(),step=qs.front();
if(see[i][j]){
cout<<step<<endl;
while(!qx.empty()){
qx.pop();qy.pop();qs.pop();
}qk();
goto aa;
}
qx.pop();qy.pop();qs.pop();
for(int k=1;k<=4;k++){
i+=p[k];j+=p2[k];
if(dt[i][j]!=1&&!book[i][j]&&i>0&&i<=n&&j>0&&j<=m){
qx.push(i);qy.push(j);qs.push(step+1);
book[i][j]=1;
}
i-=p[k];j-=p2[k];
}
}
qk();
cout<<"Poor Harry\n";
}
return 0;
}
为什么这样会RE呢?