100分1TLE
查看原帖
100分1TLE
781566
liuyuanpei楼主2023/1/13 18:54
# include <iostream>
# include <cmath>
# include <cstring>
# include <string>
# include <algorithm>
using namespace std;
int n,a,b,ans=2147483647;
int k[10005];
bool vis[10005];
void dfs (int dep,int cnt){
	if (dep==b) {
		if (ans<0||ans>cnt) ans=cnt;
		return ;
	}
	if (ans>0&&cnt>ans) return ;
	vis[dep]=1;
	if (dep+k[dep]<=n&&!vis[dep+k[dep]]) dfs (dep+k[dep],cnt+1);
	if (dep-k[dep]>0&&!vis[dep-k[dep]]) dfs (dep-k[dep],cnt+1);
	vis[dep]=0;
	return ;
}
int main (){
	ios::sync_with_stdio (false);
	cin.tie(NULL);
	cout.tie(NULL);
	cin >>n>>a>>b;
	for (int i=1;i<=n;i++)
		cin >>k[i];
	vis[a]=1;
	dfs (a,0);
	if (ans==2147483647) cout <<-1<<endl;
	else cout <<ans<<endl;
	return 0;
}

2023/1/13 18:54
加载中...