n不超过200,RE就离谱
查看原帖
n不超过200,RE就离谱
556895
Holder_Lee楼主2022/1/26 21:19
#include "cstdio"
#include "iostream"
typedef long long LL;
#define CH getchar()
#define INL inline
const int N_=205;
using namespace std;
int a[N_];
bool vis[N_];
struct{int flr,step;}que[30000000];

INL int read(){char c=CH;int s=0,k=1;while (!isdigit(c)){if (c=='-')k=-1;c=CH;}while (isdigit(c)){s=s*10+c-'0';c=CH;}return s*k;}

int main()
{
	int n=read();
	que[1].flr=read();que[1].step=0;
	int b=read();
	for(int i=1;i<=n;++i)a[i]=read();
	int l=1,r=2;bool flag=1;
	while(l<r)
	{
		if(que[l].flr==b){flag=0;printf("%d\n",que[l].step);break;}
		int nflr;
		nflr=que[l].flr+a[que[l].flr];
		if(nflr<=n&&nflr==b||a[nflr]>0&&!vis[nflr])
		{
			que[r].flr=nflr;
			que[r++].step=que[l].step+1;
			vis[nflr]=1;
		}
		nflr=que[l].flr-a[que[l].flr];
		if(nflr>0&&nflr==b||a[nflr]>0&&!vis[nflr])
		{
			que[r].flr=nflr;
			que[r++].step=que[l].step+1;
			vis[nflr]=1;
		}
		++l;
	}
	if(flag)printf("-1\n");
	return 0;
}

#8 #9快乐RE,加了不重搜还这样······

2022/1/26 21:19
加载中...