~~甚至还隐藏了一个TLE~~
by kevinZ99 @ 2024-02-06 10:32:06
```cpp
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
queue<pair<int,int> > q;
int Up[201],Down[201];
bool vis[201];
int n,a,b,k;
int bfs()
{
int x,y;
while(!q.empty())
{
x=q.front().first;
y=q.front().second;
q.pop();
if(x==b) return y;
if(Up[x]<=n and !vis[Up[x]]) {vis[Up[x]] = 1; q.push({Up[x],y+1});}
if(Down[x]>0 and !vis[Down[x]]) {vis[Down[x]] = 1; q.push({Down[x],y+1});}
}
return -1;
}
int main()
{
ios::sync_with_stdio(0);
cin >> n >> a >> b;
for(int i=1;i<=n;i++)
{
cin >> k;
Up[i]=i+k;
Down[i]=i-k;
}
q.push({a,0});
vis[a]=1;
cout <<bfs();
return 0;
}
```
by xiyihan @ 2024-02-06 10:38:57
@[jmsyang0808](/user/1202695) 改好了,需要加一个vis数组以防重复访问
by xiyihan @ 2024-02-06 10:39:36
@[xiyihan](/user/152651) thx 会关
问题已解决,此帖结。
by jmsyang0808 @ 2024-02-06 10:52:21