欢迎24级新生

第二届计算机程序赛

Problem F. 小跳蛙

有一只小跳蛙参加跳格子比赛。

比赛规则如下:
地上有一排格子,第i(1≤i≤N)个格子里有一个数字k(0≤k≤N),如果跳蛙处在第i个格子上,则它可以往左或者往右跳ki格,注意不能跳出格子外。

例如:1,2,3..., (k1=1,k2=2,....) ,表示如果跳蛙在第一个格子上可以往右跳一格,但是不能往左跳,否则将会跳出格子外。 给定两个格子的编号a(1≤a≤N) 和 b(1≤b≤N),要求跳蛙从第a个格子跳跃到第b个格子。现在小跳蛙来求助你,它应该如何跳,才能使得跳跃次数最少。

输入

输入共两行。
第一行为三个正整数N,a,b。N(1≤N≤150)表示格子的总数,a表示跳蛙起始处在第a个格子,b表示跳蛙最终要跳到第b个格子。
第二行为N个非负整数,表示ki。

输出

输出共一行。
即跳蛙最少需要跳跃几次可以到达,若无法到达输出-1。

样例

标准输入 复制文本
2 1 2
1 1
标准输出 复制文本
1
标准输入 复制文本
5 1 5
3 3 1 2 5
标准输出 复制文本
3
标准输入 复制文本
3 1 3
1 2 1
标准输出 复制文本
-1

提示

样例一:小跳蛙一开始处在第一个格子上,于是它只需要往右跳一次即可到达目标点。

样例二:小跳蛙一开始处在第一个格子上,
第一次:从第一个格子往右跳到第四个格子上
第二次:从第四个格子往左跳到第二个格子上
第三次:从第二个格子往右跳到第五个格子上

样例三:小跳蛙一开始处在第一个格子上,
无论如何跳都不可能跳到目标格子上。

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 10
通过 5

A B C D E F G H