这题开O2优化就一堆超内存,不开O2优化超内存变成超时了
#include<iostream>
#include<queue>
using namespace std;
int N,A,B;
struct ELA{
int ceng; //层数
int dis; //可移距离
}e[205],temp;
queue<ELA> qu;
int flap=0;
void BFS(){
//第一个元素入队
temp.ceng=e[A].ceng;
temp.dis=e[A].dis;
qu.push(temp);
int cnt=1; //按按钮的次数
while(!qu.empty()){
int len=qu.size();
while(len--){
int a=qu.front().ceng;//层数
int b=qu.front().dis; //可移距离
//上
if(a+b<=N){
temp.ceng=a+b;
temp.dis=e[a+b].dis;
qu.push(temp);
if(temp.ceng==B){ //到达终点
cout<<cnt;
flap=1;
return ;
}
}
//下
if(a-b>=1){
temp.ceng=a-b;
temp.dis=e[a-b].dis;
qu.push(temp);
if(temp.ceng==B){ //到达终点
cout<<cnt;
flap=1;
return ;
}
}
qu.pop();
}
cnt++;
}
}
int main(){
cin>>N>>A>>B;
for(int i=1;i<=N;i++){
e[i].ceng=i;
cin>>e[i].dis;
}
BFS();
if(flap==0){
cout<<-1;
}
return 0;
}