70分求助QWQ
查看原帖
70分求助QWQ
1138370
sjz12345楼主2024/8/16 19:41
#include <bits/stdc++.h>
using namespace std;
//#define int long long
typedef long long ll;
const int INF=0x3f3f3f3f;
const int N =2e2+10;
//const int mod=998244353;
int n,a,b;
int k[N];
int f[N];
int vis[N];
void dfs(int x){

    if(vis[x])return;

    vis[x]=1;

    if(x==b) {return;}

    if(x+k[x]<=n) {
        dfs(x + k[x]);
        f[x]=min(f[x],f[x+k[x]]+1);
    }

    if(x-k[x]>=1) {
        dfs(x - k[x]);
        f[x]=min(f[x],f[x-k[x]]+1);
    }
}
void solve() {
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++) { cin >> k[i]; f[i]=INF;}
    f[b]=0;

    dfs(a);

    f[a]==INF?cout<<-1:cout<<f[a];
}
int main() {
    ios::sync_with_stdio(0);
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int t=1;
    //cin>>t;
    while(t-->=1){
        solve();
    }
return 0;}
2024/8/16 19:41
加载中...