开开心心的写了,我在其他机构里做过这一题
2025-07-13 11:12:01
发布于:广西
1阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
struct stu
{
long long x,number = 0;
}q[43000],s,u,v;
long long n,a1,b,a[205] = {},rear = 0,front = 1;
bool vis[205] = {},flag = false;
int main()
{
cin >> n >> a1 >> b;
if(a1 == b)
{
cout << 0;
return 0;
}
for(int i = 1; i <= n; i++)
{
cin >> a[i];
}
s.x = a1;
s.number = 0;
q[++rear] = s;
vis[s.x] = true;
while(front <= rear)
{
u = q[front++];
for(int i = 1; i <= 2; i++)
{
if(i == 1)
{
v.x = u.x + a[u.x];
}
else
{
v.x = u.x - a[u.x];
}
v.number = u.number + 1;
if(v.x <= 0 || v.x > n)
{
continue;
}
if(vis[v.x] == true)
{
continue;
}
if(v.x == b)
{
cout << v.number;
flag = true;
return 0;
}
q[++rear] = v;
vis[v.x] = true;
}
}
if(flag == false)
{
cout << -1;
}
return 0;
}
这里空空如也
有帮助,赞一个