RE
查看原帖
RE
658762
sxq9楼主2023/7/11 13:30
#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呢?

2023/7/11 13:30
加载中...