061wangdaoxuan 2020-11-28 11:38:43 7 返回题目

#include<bits/stdc++.h> using namespace std; queue q; int a[100000]; bool vis[100000]; int main() { int n,s,e; cin>>n>>s>>e; for(int i=1;i<=n;i++)cin>>a[i]; q.push(s); vis[s]=1; int x=0,size=0,cnt=-1; while(x!=e){ size=q.size(); if(!size){ cout<<-1; return 0; } while(size>0){ x=q.front();q.pop();size--; if(x+a[x]<=n&&!vis[x+a[x]]){ q.push(x+a[x]); vis[x+a[x]]=1; } if(x-a[x]>=1&&!vis[x-a[x]]){ q.push(x-a[x]); vis[x-a[x]]=1; } } cnt++; } cout<<cnt; return 0; }

{{ vote && vote.total.up }}