求助BFS WA 52pts
查看原帖
求助BFS WA 52pts
1050776
peterJr楼主2024/5/29 20:33

用了 bfs,样例输出 -1 求助QwQ

#include <bits/stdc++.h>

using namespace std;

int n, a, b, k[207], vis[207], dis[207];
queue<int> q;

int main()
{
	cin >> n >> a >> b;
	for (int i = 1; i <= n; ++i) cin >> k[i];
	
	memset(dis, 0x7f, sizeof(dis));
	
	q.push(a);
	dis[a] = 0;
	while (!q.empty())
	{
		int x = q.front();
		q.pop();
		
		int d1 = x + k[x];
		int d2 = x - k[x];
		if (d1 <= n && !vis[d1]) 
		{
			vis[d1] = 1;
			dis[d1] = min(dis[d1], dis[x] + 1);
			q.push(d1);
		}
		if (d2 >= 0 && !vis[d2])
		{
			vis[d2] = 1;
			dis[d1] = min(dis[d1], dis[x] + 1);
			q.push(d2);
		}
	}
	
	if (dis[b] == 0x7f7f7f7f) printf("-1");
	else printf("%d", dis[b]); 
	
	return 0;
}
2024/5/29 20:33
加载中...