58求救
查看原帖
58求救
1143766
Cjh1227楼主2024/10/7 11:40
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7;
#define ll long long
int sum[N];
bool vis[N];
queue<int> q;
int k[N];
int main() {
	std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
    int n,a,b;
    cin>>n>>a>>b;
    for(int i=1;i<=n;i++)cin>>k[i];
    q.push(a);
    while(!q.empty()) {
        int x=q.front();
        q.pop();
        if(x==b) break;
        vis[x]=1;
        int x1=x+k[x],x2=x-k[x];
        if(x1<=n&&!vis[x1])q.push(x1),sum[x1]=sum[x]+1;
        if(x2>=1&&!vis[x2])q.push(x2),sum[x2]=sum[x]+1;
    }
    if(sum[b]==0&&b!=a)cout<<-1;
    else cout<<sum[b];
    return 0;
}

2024/10/7 11:40
加载中...