8,9wa,求助
查看原帖
8,9wa,求助
373078
PT_get楼主2020/8/28 20:03
#include<bits/stdc++.h>
using namespace std;
#define M 200+10

int n,a,b;
int k[M];
bool f[M];
int ans=0x7f7f7f7f;

int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}

void dfs(int x,int t)
{
	if(x==b)
	{
		ans=min(t,ans);
	}
	int x1=x+k[x];
	if(x1>=1 && x1<=n && !f[x1])
	{
		f[x1]=1;
		dfs(x1,t+1);
	}
	int x2=x-k[x];
	if(x2>=1 && x2<=n && !f[x2])
	{
		f[x2]=1;
		dfs(x2,t+1);
	}
}

int main()
{
	n=read(),a=read(),b=read();
	for(int i=1;i<=n;i++) k[i]=read();
	dfs(a,0);
	if(!f[b]) printf("-1\n");
	else printf("%d\n",ans);
	return 0;
}
2020/8/28 20:03
加载中...