隧道
2023-08-09 09:54:53
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
struct node {
int x, y;
};
int n, a, b, v[205];
bool flag, fl[205];
queue<node> q;
int cul(int x, bool dir) {
if(dir) return x + v[x];
return x - v[x];
}
void bfs() {
if(q.empty()) return;
node f = q.front();
q.pop();
for(int i = 0;i < 2;i ++) {
int newx = cul(f.x, i);
if(newx > 0 && newx <= n && !fl[newx]) {
if(newx == b) {
printf("%d", f.y + 1);
flag = true;
return;
}
q.push({newx, f.y + 1});
fl[newx] = true;
}
}
bfs();
return;
}
int main() {
// freopen("bear.in", "r", stdin);
// freopen("bear.out", "w", stdout);
scanf("%d%d%d", &n, &a, &b);
for(int i = 1;i <= n;i ++) scanf("%d", &v + i);
q.push({a, 0});
bfs();
if(!flag) printf("-1");
// fclose(stdin);
// fclose(stdout);
return 0;
}
这里空空如也
有帮助,赞一个