36分求调!
查看原帖
36分求调!
1385348
Ai_and_Conan楼主2024/8/28 14:14

代码如下

#include<bits/stdc++.h>
using namespace std;
queue<int>q;
int k[201],vis[201];
int n,a,b,ans,coun=0;
int main(){
    scanf("%d%d%d",&n,&a,&b);
    if(a==b){
        cout<<0;
        return 0;
    }
    for(int i=1;i<=n;i++){
        scanf("%d",&k[i]);
    }
    vis[a]=1;
    q.push(a);
    while(!q.empty()){
        int x=q.front();
        if(x==b){
            printf("%d",ans);
            return 0;
        }
        vis[x]=1;
        q.pop();
        int kx=x+k[x],ky=x-k[x];
        if(vis[kx]==0&&kx<=n&&kx>0){
            q.push(kx);
            vis[kx]=1;
        }
        if(vis[ky]==0&&ky>0&&ky<=n){
            q.push(ky);
            vis[ky]=1;
        }
        ans++;
    }
    cout<<-1;
    return 0;
}
2024/8/28 14:14
加载中...