58分求调
查看原帖
58分求调
1235962
chen_1111楼主2024/12/3 09:18
#include<bits/stdc++.h>
using namespace std;
int a[205],n,A,b,m,q,vis[205],w;
bool check()
{
    for(int i=1;i<=n;i++)
        if(!vis[i])
            return false;
    return true;
}
void dfs(int s)
{
    if(s==b)
    {
        q=1;
        return;
    }
    if(check())
    {
        w=1;
        return;
    }
    vis[s]=1;
    for(int i=1;i<=2;i++)
    {
        if(q||w)
            return;
        m++;
        if(i==1&&!vis[s+a[s]]&&s+a[s]<=n)
            dfs(s+a[s]);
        else if(!vis[s-a[s]]&&s-a[s]>-1)
            dfs(s-a[s]);
    }
}
int main()
{
    cin>>n>>A>>b;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    dfs(A);
    if(q)
        cout<<m;
    else
        cout<<-1;
}
2024/12/3 09:18
加载中...