50分!求助!
查看原帖
50分!求助!
141236
635663114_hxf楼主2021/11/4 20:58
#include<iostream>
#include<queue>
using namespace std;
int N,A,B,x,ans;
int k[209];
int visited[209];
queue<int>q;
void bfs(int A,int B)
{
    if(A!=B)
    {   
        q.push(A);
        while(!q.empty())
        {
            x = q.front();q.pop();
            if(visited[x+k[x]]==0&&x+k[x]<=N)
            {
                q.push(x+k[x]);
                ans++;
                visited[x+k[x]] = 1;
            }
            if(visited[x-k[x]]==0&&x-k[x]>=0)
            {
                q.push(x-k[x]);
                ans++;
                visited[x-k[x]] = 1;
            }
            if(q.back() == B) break;
        }
        if(q.back() != B) ans = -1;
    }
    else ans = 0;
}
int main()
{
    
    cin>>N>>A>>B;
    for(int i = 1;i<=N;i++)
    {
        cin>>k[i];
    }
    bfs(A,B);
    cout<<ans;
    return 0;
}
2021/11/4 20:58
加载中...