深搜被卡了吗???
查看原帖
深搜被卡了吗???
404469
LJN1117楼主2023/7/31 23:44

RT TLE 80pts

#include<bits/stdc++.h>
#define int long long
#define maxn 210

using namespace std;

int n,A,B;
int a[maxn];
int ans=INT_MAX;
bool vis[maxn];

void dfs(int x,int step){
	if(x==B){
		ans=min(ans,step);
		return ;
	}
	vis[x]=true;
	if(x+a[x]<=n && x+a[x]!=x && !vis[x+a[x]]) dfs(x+a[x],step+1);
	if(x-a[x]>=1 && x-a[x]!=x && !vis[x-a[x]]) dfs(x-a[x],step+1);
	vis[x]=false;
}

signed main(){
	scanf("%lld %lld %lld",&n,&A,&B);
	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
	vis[A]=true;
	dfs(A,0);
	if(ans==INT_MAX){
		printf("-1\n");
		return 0;
	}
	printf("%lld\n",ans);
	return 0;
}

2023/7/31 23:44
加载中...