用了 bfs,样例输出 -1 求助QwQ
#include <bits/stdc++.h>
using namespace std;
int n, a, b, k[207], vis[207], dis[207];
queue<int> q;
int main()
{
cin >> n >> a >> b;
for (int i = 1; i <= n; ++i) cin >> k[i];
memset(dis, 0x7f, sizeof(dis));
q.push(a);
dis[a] = 0;
while (!q.empty())
{
int x = q.front();
q.pop();
int d1 = x + k[x];
int d2 = x - k[x];
if (d1 <= n && !vis[d1])
{
vis[d1] = 1;
dis[d1] = min(dis[d1], dis[x] + 1);
q.push(d1);
}
if (d2 >= 0 && !vis[d2])
{
vis[d2] = 1;
dis[d1] = min(dis[d1], dis[x] + 1);
q.push(d2);
}
}
if (dis[b] == 0x7f7f7f7f) printf("-1");
else printf("%d", dis[b]);
return 0;
}