bfs,WA
查看原帖
bfs,WA
691375
The_Administrator楼主2024/7/5 18:46
#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[1000],x,d[1000],c[1000];
queue<int>Q;
int bfs(int u)
{
	Q.push(u);
	while(!Q.empty())
	{
		x=Q.front();
		Q.pop();
		for(int i=0;i<2;i++)
		{
			int fx[2]={k[x],-k[x]};
			if(x+fx[i]<1||x+fx[i]>n||d[x+fx[i]]&&c[x+fx[i]]<c[x]+1)continue;
			x+=fx[i];
			d[x]=1;
			c[x]=c[x-fx[i]]+1;
			if(x==b)return c[x];
			Q.push(x);
		}
	}
	return -1;
}
int main()
{
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)cin>>k[i];
	if(a==b)cout<<0;
	else cout<<bfs(a);
}
2024/7/5 18:46
加载中...