测试点一竟然是楼层相同?!
查看原帖
测试点一竟然是楼层相同?!
148441
CSPRP自增楼主2020/8/10 08:47
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
int n,a,b,t;
int d[205],dis[205],v[205];
queue <int> q;
int main(){
	cin>>n>>a>>b;
	if(a==b){
		cout<<'0'<<endl;
		return 0;
	}
	for(int i=1;i<=n;i++){
		cin>>d[i];
	}
	q.push(a);
	while(!q.empty()){
		t=q.front();
		q.pop();
		int shang=t+d[t];
		int xia=t-d[t];
		v[t]=1;
		if(shang<=n&&v[shang]==0){
		    if(shang==b){
			    cout<<dis[t]+1;
			    return 0;
		    }
			v[shang]=1;
			dis[shang]=dis[t]+1;
			q.push(shang);
		}
		if(xia>=1&&v[xia]==0){
			if(xia==b){
				cout<<dis[t]+1;
				return 0;
			}
			v[xia]=1;
			dis[xia]=dis[t]+1;
			q.push(xia);
		}
		//cout<<t<<':'<<dis[t]<<' '<<v[t]<<endl;;
	}
	cout<<-1<<endl;
	return 0;
}
2020/8/10 08:47
加载中...