社区讨论
P1135 bfs 58pts 求调
灌水区参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lys6w2cr
- 此快照首次捕获于
- 2024/07/19 12:17 2 年前
- 此快照最后确认于
- 2024/07/19 14:16 2 年前
bfs数组
58pts
谢谢dalao
CPP#include<bits/stdc++.h>
using namespace std;
int n , a , b;
int k[210][2];
int edge[210];
bool vis[210];
int step[210];
int ans;
int check (int x) {
if (x < 1 || x > n){
return 0;
}
else {
return 1;
}
}
void bfs(int a , int b) {
int now = a;
int head = 0 , tail = 1;
int sum = 0;
vis[a] = 1;
step[a] = 0;
edge[1] = a;
ans = -1;
while (head < tail){
head++;
sum = step[head] + 1;
for (int i = 0 ; i <= 1 ; i++){
now = edge[head] + k[edge[head]][i];
if (check(now) == 1 && vis[now] == 0){
tail++;
vis[now] = 1;
edge[tail] = now;
step[tail] = sum;
if (now == b){
ans = sum;
}
}
}
}
}
int main(){
cin >> n >> a >> b;
int tmp;
for (int i = 1 ; i <= n ; i++){
cin >> tmp;
k[i][1] = tmp;
k[i][0] = -tmp;
}
memset (step , -1 , sizeof(step));
bfs(a , b);
cout << ans;
return 0;
}
//はいばらあい
回复
共 0 条回复,欢迎继续交流。
正在加载回复...