原题在这
我的代码:
#include <bits/stdc++.h>
#define int long long
//#define xyyissolvy 1
using namespace std;
const int MAXN = 205;
int xyyissolvy = 1;
int n, a, b, xyy[MAXN], ans, ways[5] = {xyyissolvy, -xyyissolvy};
bool lvy[MAXN];
struct lft {
int id, step;
};
queue<lft>q;
void bfs() {
if (a == b) {
ans = 0;
return ;
}
q.push(lft{a, 0});
lvy[a] = xyyissolvy;
while (!q.empty()) {
int id = q.front().id, step = q.front().step;
q.pop();
for (int i = 0; i < 2; i++) {
int nid = id + xyy[id] * ways[i];
if (nid<xyyissolvy || nid>n)
continue;
if (lvy[nid])
continue;
lvy[nid] = xyyissolvy;
q.push(lft{nid, step + xyyissolvy});
if (nid == b) {
ans = step + xyyissolvy;
return ;
}
}
}
}
signed main() {
cin >> n >> a >> b;
for (int i =xyyissolvy ; i <= n; i++) {
cin >> xyy[i];
}
bfs();
cout << ans << '\n';
return 0;
}
救救孩子!