求助(悬关)
查看原帖
求助(悬关)
817033
ikun_czy楼主2023/10/17 21:10
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<stack>
#include<math.h>
using namespace std;
int main(void)
{
    //freopen("dd1.txt","r",stdin);
    //freopen("dd2.txt","w",stdout);
    int n,a,b;
    scanf("%d",&n);
    scanf("%d",&a);
    scanf("%d",&b);
    int s[n];
    bool fs[n];
    for(int i=0;i<=n;i++)
    {
        scanf("%d",&s[i]);
        fs[i]=0;
    }
    queue<int>s1;
    queue<int>s2;
    s1.push(a);
    s2.push(0);
    while(!s1.empty())
    {
        int nx=s1.front();
        int ny=s2.front();
        s1.pop();
        s2.pop();
        fs[nx-1]=1;
        if(nx==b)
        {
            printf("%d",ny);
            return 0;
        }
        if(nx+s[nx-1]<=n&&fs[nx+s[nx-1]]==0)
        {
            s1.push(nx+s[nx-1]);
            s2.push(ny+1);
        }
        if(nx-s[nx-1]>=1&&fs[nx-s[nx-1]]==0)
        {
            s1.push(nx-s[nx-1]);
            s2.push(ny+1);
        }
    }
    printf("-1");
    return 0;
}

50分tle求助

2023/10/17 21:10
加载中...