没输出求调
查看原帖
没输出求调
970168
Wight_sl楼主2024/7/9 20:44
#include<bits/stdc++.h>
#include<queue>
#define N 16390
#define IOS ios::sync_with_stdio(false)
#define CT cin.tie(NULL)
#define Ct cout.tie(NULL) 
#define l_queue priority_queue <int,vector<int>,greater<int> >
#define p_queue priority_queue <int>
inline void read(int& a){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') w=-1;ch=getchar();}while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}a=s*w;}
void write(int x){if(x<0) putchar('-'),x=-x;if(x>9) write(x/10);putchar(x%10+'0');}
using namespace std;
struct node{
	int x,y,step;
};
queue<node> q;
int n,m,z,qx,qy,zx,zy;
int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
int dx_[8]={0,0,1,1,1,-1,-1,-1},dy_[8]={1,-1,-1,0,1,-1,0,1};
bool v[N][N],vis[N][N];
string s[N];
bool zz(int a,int b,int c,int d){
	if(a==b==c==d==0) return 1;
	return 0;
}
bool pd(int a,int b){
	if(a<1||a>n||b<1||b>m||s[a][b]=='X') return 0;
	return 1;
}
void bfs(int x,int y,int step){
	for(int i=0;i<4;i++){
		int xx=x+dx[i],yy=y+dy[i];
		if(pd(xx,yy)&&!vis[N][N]){
			q.push({xx,yy,step+1});
			if(v[xx][yy]){
				write(step);
				puts("");
				return ;
			}
		}
	}
	q.pop();
	if(q.size()) bfs(q.front().x,q.front().y,q.front().step);
}
signed main(){
	IOS;CT;Ct;
	read(n);read(m);
	for(int i=1;i<=n;i++) cin>>s[i];
	while(cin>>qx>>qy>>zx>>zy){
		if(zz(qx,qy,zx,zy)) return 0;
		for(int i=0;i<8;i++){
			int _=zx,__=zy;
			while(pd(_,__)){
				_+=dx_[i],__+=dy_[i];
				v[_][__]=1;
			}
		}
		memset(vis,INT_MAX,sizeof vis);
		vis[qx][qy]=0;
		bfs(qx,qy,0);
		puts("Poor Harry");
	}
    return 0;
}
2024/7/9 20:44
加载中...