#3wa???大佬来看看
查看原帖
#3wa???大佬来看看
648053
wh_1024楼主2022/8/10 10:48
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define f(i,j,n) for(int i=j;i<=n;i++)
const ll mx=1e12,mi=-1e12,N=10000000;
queue<pair<int,int> >q;
int dx[]={1,2,2,1,-1,-2,-2,-1},dy[]={2,1,-1,-2,2,1,-1,-2};
int n,a,b;
typedef struct{
	int floor;
	int cnt;
}elem;
queue<elem> Q;
int main(){
	int i;int s[1000],t[1000]={0};
	cin>>n>>a>>b;
	f(i,1,n)cin>>s[i];
	elem e1,e2;
	e1.floor=a;e1.floor=1;
	//入队初始状态并标记 
	Q.push(e1);t[a]=1;
	while(!Q.empty())
	{
		e2=Q.front();
		Q.pop();
		if(e2.floor==b)break;
		//向上可以
		i=e2.floor+s[e2.floor];
		if(i<=n&&t[i]==0)
		{
			e1.floor=i;
			e1.cnt=e2.cnt+1;
			Q.push(e1);
			t[i]=1;
		}
		//向下 
		i=e2.floor-s[e2.floor];
		if(i>=1&&t[i]==0)
		{
			e1.floor=i;
			e1.cnt=e2.cnt+1;
			Q.push(e1);
			t[i]=1;
		}
	}
	if(e2.floor==b)cout<<e2.cnt;
	else cout<<-1;
}
2022/8/10 10:48
加载中...