社区讨论
请“大脑”帮帮忙
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 条回复,欢迎继续交流。
正在加载回复...