40分求助(两个运行错误,说是内存有问题),跪求大侠相助
查看原帖
40分求助(两个运行错误,说是内存有问题),跪求大侠相助
727043
Jason0328楼主2022/10/29 00:04
#include <bits/stdc++.h>
using namespace std;
int n, a, b, ans = -1, sum = 0;
int k[32768][2];
bool s[32768], cmp = false;
int q[32768];
void bfs(int a, int b) {
	int x, f = 0, r = 1;
	s[a] = true; 
	q[1] = a;
	bool test = true;
        int y = 0;
	do {
		f++;
		for(int j = 0; j <= 1; j++) {
                        y=q[f];
			if(j <= 1) x = q[f] + k[y][j];
			if(x >= 1 && x <= n && !s[x]) {
				if(x == b) {
					sum++;
					ans = sum;
					test = false;
					break;
				} else {
					cmp = true;
					r++;
					s[x] == true;
					q[r] = x;
				}
			}
		}
		if(cmp) {
			sum++;
			cmp = false;
		}
	} while(f < r && test);
	cout << ans << endl;
}
int main() {
	memset(s, false, sizeof(s));
memset(k, -1, sizeof(k));
	cin >> n >> a >> b;
	for(int i = 1; i <= n; i++) {
		cin >> k[i][0];
		k[i][1] = 0-k[i][0];
	}

	if(a == b) {
		cout << 0 << endl;
		return 0;
	}
	bfs(a, b);
	return 0;
}
2022/10/29 00:04
加载中...