求助,为什么这样不对啊啊啊
查看原帖
求助,为什么这样不对啊啊啊
377511
果圆楼主2021/4/23 15:12
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int n,a,b;
int to[1000],dis[1000];
int ans=-1;
bool wd[1000];
int main()
{
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	cin>>to[i];
	
	queue<int> q;
	q.push(a);wd[a]=1;
	while(q.size())
	{
		int x=q.front();
		q.pop();
		if(x==b) 
		{
			ans=dis[x];
			break;
		}
		
		if(x+to[x]<=n&&!wd[x+to[x]])
		{
			dis[x+to[x]]=dis[x]+1; 
			q.push(x+to[x]);wd[x+to[x]]=1;
		}
		if(x-to[x]>=1&&!wd[x+to[x]])
		{
			dis[x-to[x]]=dis[x]+1;
			q.push(x-to[x]);wd[x-to[x]]=1;
		}
	}
	cout<<ans<<endl;
	return 0;
}
2021/4/23 15:12
加载中...