ac

躺平摆烂学废卷赢都不会的rj  •  19天前


include

include

include

using namespace std;

struct node {

int id, cnt;

}; queueq; int to[210]; bool vis[210];

int main() {

int n, a, b;
cin >> n >> a >> b;
memset(vis, false, sizeof(vis));
for (int i = 1; i <= n; i++)
	cin >> to[i];
node c, d, x;
c = {a, 0};
q.push(c);
vis[a] = true;
while (!q.empty()) {
	x = q.front();
	q.pop();
	if (x.id == b)
		break;
	if (x.id + to[x.id] <= n && !vis[x.id + to[x.id]]) {
		d = {x.id + to[x.id], x.cnt + 1};
		q.push(d);
		vis[x.id + to[x.id]] = true;
	}
	if (x.id - to[x.id] <= 1 && !vis[x.id - to[x.id]]) {
		d = {x.id - to[x.id], x.cnt + 1};
		q.push(d);
		vis[x.id - to[x.id]] = true;
	}
}
if (x.id == b)
	cout << x.cnt;
else
	cout << -1;
return 0;

}


评论:

请先登录,才能进行评论