错了#8 #9,求助
查看原帖
错了#8 #9,求助
559969
dtw35l楼主2022/6/20 11:16
#include <cstdio>
#define int unsigned long long

int a[250], A, B, n, min;
bool vis[250], viss;
void dfs(int x, int i) {
	vis[x] = true;
	if (x == B) {
		if (viss == false)
			min = i, viss = true;
		else min = min > i ? i : min;
	}
	if (x + a[x] <= n && (!vis[x + a[x]])) {
		dfs(x + a[x], i + 1);
	} else if (x - a[x] > 0 && (!vis[x - a[x]])) {
		dfs(x - a[x], i + 1);
	}
}
signed main() {
	scanf("%d%d%d", &n, &A, &B);
	for (int i = 1; i <= n; i++) {
		scanf("%d", &a[i]);
	}
	dfs(A, 0);
	if (viss) printf("%d\n", min);
	else puts("-1");
	return 0;
} ```
2022/6/20 11:16
加载中...