BFS36分求解,全WA
查看原帖
BFS36分求解,全WA
1280303
petezhuang楼主2024/3/16 00:44

代码如下,求解答

#include <bits/stdc++.h>
using namespace std;

int ans,A,B,N,K[1000];
int visited[1000];
queue<int> Q;
int main(){
	cin >> N >> A >> B;
	for(int i = 1; i <= N; i++){
		cin >> K[i];
	}

	memset(visited,-1,sizeof(visited));
	visited[A] = 1;
	int u;
	Q.push(A);
	ans = 0;
	while(!Q.empty()){
		u = Q.front();
		Q.pop();
		if(u == B) break;
		for(int i = -1; i < 2;i += 2){
			int dest = u + (K[u] * i);
			if(dest >= 1 && dest <= N && visited[dest] == -1){
				visited[dest] = 1;
				ans++;
				Q.push(dest);
			}
		}
	}
	if(u == B){
		cout << ans;
	}else{
		cout << -1;
	}
}
2024/3/16 00:44
加载中...