bfs 奇怪的电梯
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int n,a,b;
int g[205],f[205],flag;
bool vis[205];
int bfs()
{
queue<int>q;
q.push(a);
f[a] = 0;
while(!q.empty())
{
int k = q.front();
if(k == b)
return f[k];
q.pop();
int x = k + g[k], y = k - g[k];
if(x<=n&&!vis[x])
{
vis[x] = true;
q.push(x);
f[x] = f[k] + 1;
}
if(y>=1&&!vis[y])
{
vis[y] = true;
q.push(y);
f[y] = f[k] + 1;
}
}
return -1;
}
int main()
{
cin >> n >> a >> b;
memset(f,0,sizeof(f));
memset(vis,false,sizeof(vis));
for(int i = 1; i <= n; i++)
{
cin >> g[i];
}
cout << bfs() << endl;
return 0;
}