0
点赞
收藏
分享

微信扫一扫

奶牛线路(春季每日一题 26)

厌倦了农场寒冷的冬季天气,奶牛贝茜计划飞往一个温暖的目的地度假。

不幸的是,她发现只有一家航空公司,博维尼亚航空,愿意向奶牛出售机票,而且这些机票的结构有些复杂。

博维尼亚航空公司拥有 奶牛线路(春季每日一题 26)_枚举 架飞机,每架飞机都在由两个或多个城市组成的特定“航线”上飞行。

例如,一架飞机可能从城市 奶牛线路(春季每日一题 26)_枚举_02 起飞,然后飞到城市 奶牛线路(春季每日一题 26)_逆序_03,然后飞到城市 奶牛线路(春季每日一题 26)_枚举_04,最后飞到城市 奶牛线路(春季每日一题 26)_i++_05

没有一个城市会在一条航线上出现多次。

如果贝茜选择了一条航线,那么她可以在航线上的任何城市登机,然后在航线上的任何城市下飞机。

她不需要在航线的第一个城市登机或在最后一个城市下机。

每条航线都有一定的费用,只要贝茜乘坐了某个航线,不论乘坐时途径的城市有多少,都需要支付全部的航线费用。

贝茜想找到从她所在的农场(在 奶牛线路(春季每日一题 26)_逆序_06 市)到热带目的地(奶牛线路(春季每日一题 26)_输出格式_07 市)的最便宜的旅行方式。

但她不想被复杂的行程搞糊涂,所以她只想搭乘一条航线。

请确定她需要支付的最低费用。

输入格式
第一行包含三个整数 奶牛线路(春季每日一题 26)_逆序_08

接下来 奶牛线路(春季每日一题 26)_i++_09 行,每两行描述一条航线,第一行包含航线的乘坐费用以及航线途径的城市数量。第二行包含按航线顺序排列的城市列表。

输出格式
输出贝茜从 奶牛线路(春季每日一题 26)_逆序_06奶牛线路(春季每日一题 26)_输出格式_07 所需要支付的最低费用。

如果无法到达目的地,则输出 奶牛线路(春季每日一题 26)_枚举_12

数据范围
奶牛线路(春季每日一题 26)_枚举_13
奶牛线路(春季每日一题 26)_i++_14
奶牛线路(春季每日一题 26)_i++_15
城市编号范围 奶牛线路(春季每日一题 26)_ios_16

输入样例:

1 2 3
3 3
3 2 1
4 4
2 1 4 3
8 5
4 1 7 8 2

输出样例:

8

样例解释
虽然存在一条搭乘两次航线的更便宜的路线(先乘坐第二条航线从城市 奶牛线路(春季每日一题 26)_枚举_02 飞往城市 奶牛线路(春季每日一题 26)_ios_18,再乘坐第一条航线从城市 奶牛线路(春季每日一题 26)_ios_18 飞往城市 奶牛线路(春季每日一题 26)_枚举_04),但是贝茜只想乘坐一条航线,所以她只能乘坐第三条航线,花费为 奶牛线路(春季每日一题 26)_i++_05

#include<iostream>

using namespace std;

const int INF = 10000;

int a, b, n;

int main(){

cin >> a >> b >> n;

int cost, k, res = INF;
while(n--){

cin >> cost >> k;
int as = 0, bs = 0, x;
for(int i = 1; i <= k; i++){
cin >> x;
if(x == a) as = i;
else if(x == b) bs = i;
}

if(as && bs && as < bs)
res = min(res, cost);
}

if(res == INF) puts("-1");
else cout << res << endl;

return 0;
}


举报

相关推荐

0 条评论