#3 wa求助,加了a==b的特判
查看原帖
#3 wa求助,加了a==b的特判
313137
qqqqq111楼主2021/6/17 19:13

rt

#include<iostream>
#include<queue>
#include<cstdio>
struct node{
	int now;
	int walk;
};
std::queue<node> q;
int n,a,b;
int vis[10001];
int k[1001];
int main(void){
	scanf("%d%d%d",&n,&a,&b);
	for(int i=1;i<=n;i++)
		scanf("%d",&k[i]);
	if(a==b){
		printf("0");
		return 0;
	}
	vis[a]=1;
	q.push((node){a,0});
	while(!q.empty()){
		node now;
		now=q.front();
		q.pop();
		if(now.now==b){
			printf("%d",now.walk);
			return 0;
		}
		int dist;
		dist=now.now+k[now.now];
		if(dist>1 && dist<=n && vis[dist]==0){
			q.push((node){dist,now.walk+1});
			vis[dist]=1;
		}
		dist=now.now-k[now.now];
		if(dist>1 && dist<=n && vis[dist]==0){
			q.push((node){dist,now.walk+1});
			vis[dist]=1;
		}
	}
	printf("-1");
}
2021/6/17 19:13
加载中...