1360:奇怪的电梯(lift)

http://ybt.ssoier.cn:8088/problem_show.php?pid=1360

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n, a, b;
 4 int k[205];
 5 bool vis[205];
 6 struct node{
 7     int x, s;
 8 };
 9 node que[205];
10 int f, r;
11 int ans=-1;
12 void lift(int nx, int fs){
13     if(nx>=1 && nx<=n && vis[nx]==0){//判断是否满足入队条件 
14         vis[nx]=1;//更改状态,防止重复访问 
15         r++;//队列后移准备入队 
16         que[r].x=nx;//入队 
17         que[r].s=fs+1;
18     }
19 }
20 int main()
21 {
22     cin>>n>>a>>b;
23     for(int i=1; i<=n; i++)cin>>k[i];
24     f=r=1;//队列初始化 
25     que[r].x=a;  que[r].s=0;//初始楼层入队 
26 
27     while(f<=r){
28         int fx=que[f].x;//获取队首信息 
29         int fs=que[f].s;
30         if(fx==b){
31             ans=fs;
32             break;
33         }
34         lift(fx+k[fx], fs);//电梯向上 
35         lift(fx-k[fx], fs);//电梯向下 
36         f++;//队首信息出队 
37     }
38     cout<<ans;
39     return 0;
40  } 
原文地址:https://www.cnblogs.com/tflsnoi/p/13752873.html