9 条题解

  • 1
    @ 2024-2-19 17:01:27

    #include<bits/stdc++.h> using namespace std; const int N = 1e6+10; int q[N]; int k[N]; int a[N]; int b[N]; int main(){ int x,y,n; cin>>n>>x>>y; for(int i=1;i<=n;i++) cin>>k[i]; b[x]=1; q[1]=x; int ll=0;rr=1; do{ ll++; for(int i=-1;i<=1;i+=2){ int newlou=q[ll]+k[q[ll]]*i; if(newlou>0&&newlou<=n&&!b[newlou]){ rr++; q[rr]=newlou; b[newlou]=1; a[rr]=a[ll]+1; } } }while(ll!=rr&&q[ll]!=y); if(x==y)cout<<0<<endl; else if(q[11]==y)cout<<a[ll]<<endl; else cout<<-1<<endl; return 0; }

    信息

    ID
    2
    时间
    1000ms
    内存
    32MiB
    难度
    8
    标签
    递交数
    171
    已通过
    27
    上传者