社区讨论

请“大脑”帮帮忙

P1135奇怪的电梯参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m3tze34c
此快照首次捕获于
2024/11/23 17:42
去年
此快照最后确认于
2025/11/04 14:05
4 个月前
查看原帖
请“大脑”帮帮看一下哪错了
CPP
#include<bits/stdc++.h>
using namespace std;
int n, a, b, cnt = -1;
int k[10000];
int flag[10000];
void dfs(int x, int f){
	flag[x] = f;
	if(x + k[x] <= n && flag[x + k[x]] > f+1) dfs(x+k[x], f+1);//上 
	if(x - k[x] >= 1 && flag[x - k[x]] > f+1) dfs(x-k[x], f+1);//下 
}
int main(){
	//freopen(".in", "r", stdin);
	//freopen(".out", "w", stdout);
	memset(flag,1e9,sizeof(flag));
	cin >> n >> a >> b;
	for(int i = 1; i <= n; i++){
		cin >> k[i];
	}
	if(a == b){
		cout << 0;
		return 0;
	}
	dfs(a, 0);
	if(a == b){
		cout << 0;
		return 0;
	}
	flag[b] == 1e9 ? cout << -1 : cout << flag[b];
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...