为什么我第一个测试点T了
查看原帖
为什么我第一个测试点T了
657864
GOD_hj楼主2023/1/9 20:44

rt,

#include<bits/stdc++.h>
using namespace std;
int n,a,b,k[210],ans=0x3f3f3f3f;
bool vis[210];
void dfs(int x,int y){
	if(x==b){
		ans=min(ans,y);
		return ;
	}
	if(y>=ans) return ;
	vis[x]=1;int i=x;
		if(x+k[i]<=n&&!vis[x+k[i]]) dfs(x+k[i],y+1);
		if(x-k[i]>0&&!vis[x-k[i]]) dfs(x-k[i],y+1);
	vis[x]=0;
	return ;
}
signed main(void){
	scanf("%d%d%d",&n,&a,&b);
	for(int i=1;i<=n;++i){
		scanf("%d",k+i);
	}vis[a]=1;
	dfs(a,0);
	printf("%d\n",ans==0x3f3f3f3f?-1:ans);
	return 0;
} 
2023/1/9 20:44
加载中...