bfs 50求助
查看原帖
bfs 50求助
1131407
Fanzone楼主2023/11/14 19:51
#include<iostream>
#include<queue>
using namespace std;
struct node{
    int step;
    int w;
};
int n,a,b;
int num[201];
int step[10001]={0};
int main(){
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++)cin>>num[i];
    queue<node> flr;
    node fi={0,a};
    flr.push(fi);
    node temp;
    step[a]=1;
    while(flr.size()){
        temp=flr.front();
        flr.pop();
        if(temp.w==b) break;
        step[temp.w]=1;
        if(step[temp.w-num[temp.w]]!=1 && temp.w-num[temp.w]>0)temp={temp.step+1,temp.w-num[temp.w]},flr.push(temp);
        if(step[temp.w+num[temp.w]]!=1 && temp.w+num[temp.w]<=n)temp={temp.step+1,temp.w+num[temp.w]},flr.push(temp);
    }
    if(temp.w==b)cout<<temp.step;
    else cout<<"-1";
    system("pause");
    return 0;
}
2023/11/14 19:51
加载中...