| 比赛 | 
    NNOI2024 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    奇怪的电梯 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    李奇文 | 
    运行时间 | 
    0.082 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.57 MiB  | 
    | 提交时间 | 
    2024-12-28 18:24:33 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,a,b,d[201][201];
int main(){
	freopen("lift.in","r",stdin);
	freopen("lift.out","w",stdout); 
	memset(d,0x3f3f3f3f,sizeof(d));
	scanf("%d%d%d",&n,&a,&b);
	for(int i=1;i<=n;i++){
		d[i][i]=0;
	}
	for(int i=1;i<=n;i++){
		int x;
		scanf("%d",&x);
		if(1<=i-x){
			d[i][i-x]=min(d[i][i-x],1);
		}
		if(i+x<=n){
			d[i][i+x]=min(d[i][i+x],1);
		}
	}
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				d[i][j]=min(d[i][k]+d[k][j],d[i][j]);
			}
		}
	}
	if(d[a][b]==0x3f3f3f3f){
		cout<<-1;
	}else{
		cout<<d[a][b];
	}
	return 0;
}