深搜58求调
查看原帖
深搜58求调
1277657
Yaoshui_lv楼主2024/8/9 20:16
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, a, b, ans = 1e18, re = 0;
int d[210], mi[210];

void dfs(int x) {
	if (x < 1 || x > n) return ;
	if (re >= mi[x]) return ;
	if (re >= ans) return ;
	if (x == b) {
		ans = re;
		return ;
	}
	mi[x] = re;
	re++;
	dfs(x+d[x]);
	dfs(x-d[x]);
} 

signed main() {
	cin >> n >> a >> b;
	for (int i = 1; i <= n; i++) { 
		cin >> d[i];
		mi[i] = 1e18;
	}
	dfs(a);
	if (ans == 1e18) cout << -1;
	else cout << ans;
	return 0;
}
2024/8/9 20:16
加载中...