84求条,BFS
查看原帖
84求条,BFS
1430942
qiaohaoran123楼主2025/7/28 09:56

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
long long n,m,a[15][15],ans=1e9,x,y;
int fx[]={0,1,0,-1,0},fy[]={0,0,1,0,-1};
int vis[15][15];
struct Pos{
	int x,y,hp,step;
};
void bfs(){
	queue<Pos>q;
	q.push({x,y,6,0});
	while(!q.empty()){
		int X=q.front().x,Y=q.front().y,Hp=q.front().hp,Step=q.front().step;
		q.pop();
		if(a[X][Y]==4)Hp=6;
		if(a[X][Y]==3){
			cout<<Step;
			exit(0);
		}
		for(int i=1;i<=4;i++){
			int nx=X+fx[i],ny=Y+fy[i];
			if(nx>0&&nx<=n&&ny>0&&ny<=m&&a[nx][ny]!=0&&!vis[nx][ny]&&Hp>1){
				q.push({nx,ny,Hp-1,Step+1});
				vis[nx][ny]=true;
			}
		}
	}
}
signed main(){
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
        cin>>a[i][j];
        if(a[i][j]==2)x=i,y=j;
    }
    bfs();
    cout<<-1;
    return 0;
}

记录

2025/7/28 09:56
加载中...