躺平摆烂学废卷赢都不会的rj • 19天前
using namespace std;
struct node {
int id, cnt;
}; queueq; int to[210]; bool vis[210];
int main() {
int n, a, b;
cin >> n >> a >> b;
memset(vis, false, sizeof(vis));
for (int i = 1; i <= n; i++)
cin >> to[i];
node c, d, x;
c = {a, 0};
q.push(c);
vis[a] = true;
while (!q.empty()) {
x = q.front();
q.pop();
if (x.id == b)
break;
if (x.id + to[x.id] <= n && !vis[x.id + to[x.id]]) {
d = {x.id + to[x.id], x.cnt + 1};
q.push(d);
vis[x.id + to[x.id]] = true;
}
if (x.id - to[x.id] <= 1 && !vis[x.id - to[x.id]]) {
d = {x.id - to[x.id], x.cnt + 1};
q.push(d);
vis[x.id - to[x.id]] = true;
}
}
if (x.id == b)
cout << x.cnt;
else
cout << -1;
return 0;
}
评论:
请先登录,才能进行评论