听灌多
  • 板块灌水区
  • 楼主xixiyan
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/8/3 10:02
  • 上次更新2024/8/3 11:15:29
查看原帖
听灌多
1113503
xixiyan楼主2024/8/3 10:02

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;
}
2024/8/3 10:02
加载中...