#2723. 硬币路径
硬币路径
题目描述
给出一个数组由个整数组成的数组 (下标从1开始),和一个整数。这个整数表示,在数组 中,从任意位置(假设数组下标为)可以跳到以数组中为下标的任何一个位置,只要你可以跳到数组 中的这个位置。并且,如果你站在下标为的位置上,你需要付个硬币。如果是-1,表示不能跳到数组中下标为 的位置。
现在,从数组中下标为1的位置开始,你需要付最少的硬币,到达下标为的位置。返回支付最少硬币到达下标的路径(从1开始直到),用数组表示。
如果存在相同花费的多条路径,返回字典序最小的路径。
如果不能够到达下标N的位置,那么返回一个空的数组。
输入格式
第一行1个整数,表示数组元素个数
第二行,个整数,表示数组元素,空格隔开
第三行,一个整数
输出格式
返回字典序最小的路径,如果没有,返回nill
5
1 2 3 4 5
2
1 3 5
解释:9是最小的花费
5
1 2 4 -1 2
1
nill
解释:不存在从1到n的路径
数据范围
1、路径比的字典序小,当且仅当使得与不同的第一个;如果不存在这样的,那么 。
2、 (如果存在)在[-1, 100]的范围内。
3、的长度在[1, 1000]的范围内。
4、在[1, 100]的范围内。
来源
lintcode 866