40分求助
查看原帖
40分求助
707144
Ace_Maochang楼主2023/10/31 19:33

RT

样例过了,但是除了AC点全部RE

#include<iostream>

using namespace std;

int n,d[114514],A,B;
struct dt{
	int  v;
	int  cnt;
}Q[114514],start,finish;
int dx[]={-1,1};
bool used[114514];

int expand(){
	int cl=1,op=1;//cl是当前处理结点 ,op是新结点 
	Q[1]=start;
	if(start.v==finish.v)	return 0;
	for(;cl<=op;cl++){
		for(int i=0;i<=1;i++){
			Q[++op].v=Q[cl].v+d[Q[cl].v]*dx[i];
			Q[op].cnt=Q[cl].cnt+1;
			if(Q[op].v<1||Q[op].v>n)	continue;
			if(used[Q[op].v])	op--;
			else{
				used[Q[op].v]=1;
			}		
			if(Q[op].v==finish.v)	return op;
		}
	} 
	return -1;
} 

int main(){	
	cin>>n>>A>>B;
	start.v=A;
	finish.v=B;
	for(int i=1;i<=n;i++){
		cin>>d[i];
	}
	int a=expand();
	if(a==-1){
		cout<<"-1";
		return 0;
	}
	cout<<Q[a].cnt;
	return 0;
}

2023/10/31 19:33
加载中...