90分求助!!!
查看原帖
90分求助!!!
872386
Officer楼主2023/11/3 22:42
#include<bits/stdc++.h>
using namespace std;
int n,x,y;
int a[205],vis[205];
struct no
{
	int id,s;
}w,ss;
queue<no> q;
int f=0;
void ind(int id,int s)
{
	ss.id=id;
	ss.s=s;
	q.push(ss);
	vis[id]=1;
	while(!q.empty())
	{
		ss=q.front();
		if(ss.id==y)
		{
			cout<<ss.s<<endl;
			f=1;
			return;
		}
		q.pop();
		int t=ss.id+a[ss.id];
		if(t<=n&&vis[t]==0)
		{
			w.id=t;
			w.s=ss.s+1;
			vis[t]=1;
			q.push(w);
		}
		t=ss.id-a[ss.id];
		if(t<=n&&vis[t]==0)
		{
			w.id=t;
			w.s=ss.s+1;
			vis[t]=1;
			q.push(w);
		}
	}
}
int main()
{
	cin>>n>>x>>y;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	if(x==y)
	{
		cout<<"0"<<endl;
		f=1;
	}
	ind(x,0);
	if(f==0)
	{
		cout<<-1<<endl;
	}
    return 0;
}
2023/11/3 22:42
加载中...