P10491 已知代码错在22行一带,提交后RE,每次自测样例输出都不一样,求助!
#include <bits/stdc++.h>
using namespace std;
struct QWE{int x,y,t;};
queue<QWE> q;
int n,m,xr,yr,xd,yd;
int dx[8][2]={{1,2},{2,1},{-1,-2},{-2,-1},{-1,2},{-2,1},{1,-2},{2,-1}};
bool vis[151][151];
int bfs(){
int x,y,t;
vis[xr][yr]=true;
q.push({xr,yr,0});
while(!q.empty()){
x=q.front().x;
y=q.front().y;
t=q.front().t;
q.pop();
if(x==xd && y==yd) return t;
for(int i=0,xi,yi;i<8;i++){
xi=x+dx[i][0];
yi=y+dx[i][1];
// cout<<xi<<' '<<yi<<' '<<t<<'\n';
if(xi<0 || yi<0 || xi>n-1 || yi>m-1) continue;
// cout<<'6'<<xi<<' '<<yi<<' '<<t<<'\n';
if( !vis[xi][yi]){
vis[xi][yi]=true;
q.push({xi,yi,t+1});
}
}
}
}
int main(){
int n,m;
cin>>m>>n;
for(int i=0;i<n;i++){
char c;
for(int j=0;j<m;j++){
cin>>c;
if(c=='K'){
xr=i;
yr=j;
}
if(c=='H'){
xd=i;
yd=j;
}
if(c=='*'){
vis[i][j]=true;
}
}
}
cout<<bfs();
return 0;
}