#7不对
查看原帖
#7不对
1808312
dkr123楼主2025/7/22 20:35

#include<bits/stdc++.h> using namespace std; int const MAXN=205; int n,a,b,k[MAXN],dist[MAXN]; queue q; int main() { cin>>n>>a>

#include<bits/stdc++.h>
using namespace std;
int const MAXN=205;
int n,a,b,k[MAXN],dist[MAXN];
queue<int> q;
int main() {
	cin>>n>>a>>b;
	for(int i=1; i<=n; i++) {
		dist[i]=-1;
		cin>>k[i];
	}
	q.push(a);
	dist[a]=0;
	while(!q.empty()) {
		int y=q.front();
		int up=y+k[y],down=y-k[y];
		q.pop();
		if(up >=1 &&up<=n &&dist[up]==-1) {
			dist[up] = dist[y] + 1;
			q.push(up);
			if (up == b) {
				cout << dist[up];
				return 0;
			}
		}
		if(down>=1 && down <= n&&dist[down]==-1) {
			dist[down] = dist[y] + 1;
			q.push(down);
			if (down == b) {
				cout << dist[down];
				return 0;
			}
		}
	}
	if(n==1&&k[1]==0) {
		cout<<0;
	} else {
		cout<<-1;
	}
	return 0;
}

b; for(int i=1; i<=n; i++) { dist[i]=-1; cin>>k[i]; } q.push(a); dist[a]=0; while(!q.empty()) { int y=q.front(); int up=y+k[y],down=y-k[y]; q.pop(); if(up >=1 &&up<=n &&dist[up]==-1) { dist[up] = dist[y] + 1; q.push(up); if (up == b) { cout << dist[up]; return 0; } } if(down>=1 && down <= n&&dist[down]==-1) { dist[down] = dist[y] + 1; q.push(down); if (down == b) { cout << dist[down]; return 0; } } } if(n==1&&k[1]==0) { cout<<0; } else { cout<<-1; } return 0; }

2025/7/22 20:35
加载中...