DFS 50分求调
查看原帖
DFS 50分求调
693552
xingze楼主2023/10/29 12:14
#include <bits/stdc++.h>
using namespace std;
int n,a,b,ans=INT_MAX-1;
int t[250];
bool v[250];
void dfs(int n,int k)
{
    if(n==b) 
        ans=min(ans,k);
    if(k>ans)
        return;
    v[n]=1;
    if(n+t[n]<=n&&!v[n+t[n]])
        dfs(n+t[n],k+1);
    if(n-t[n]>=1&&!v[n-t[n]]) 
        dfs(n-t[n],k+1);
    v[n]=0;
}
int main()
{
    cin >> n>>a>>b;
    for(int i=1;i<=n;i++) 
        cin >> t[i];
    v[a]=1;
    dfs(a,0);
    if(ans!=INT_MAX-1) 
        cout << ans<<endl;
    else 
        cout << -1<<endl;
    return 0;
}

https://www.luogu.com.cn/record/132016977

2023/10/29 12:14
加载中...