全都TLE。今天没下载次数了。唉。
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int maxn = 205;
int n, a, b;
int delta[maxn], ans[maxn]; //delta[n] = d:第n层+-d层
int op[] = {1, -1};
queue<int> q;
int main(){
cin >> n >> a >> b;
memset(ans, -1, sizeof(ans));
ans[a] = 0;
for(int i = 1; i <= n; i++)
cin >> delta[i];
q.push(1);
while(!q.empty()){
int cur_f = q.front();
// cout << "current floor = " << cur_f << endl;
q.pop();
for(int i = 0; i < 2; i++){
int new_f = cur_f + op[i] * delta[cur_f];
if(new_f < 1 || new_f > n)
continue;
// cout << "new floor = " << new_f << " ";
ans[new_f] = ans[cur_f] + 1;
q.push(new_f);
}
}
cout << ans[b];
return 0;
}