思路:枚举 + 二分
这题至多游览三个景点,而且要求任意两个游览的景点,至多通过两条路径可以到达。
考虑游览的景点数:
- 一个,遍历所有景点即可
- 两个,枚举每条边即可
- 三个,枚举每个点 x 的所有邻居,根据通过路径的时间和游览景点的时间从小到大排序。然后继续枚举点 x 的邻居 y ,再二分得到符合条件的邻居 z 即可。
P1466.2023.08.19-第三题-小红旅游
题目内容
小红很喜欢旅游,目标是游遍全球。作为一个程序猿,小红想写个程序来规划自己的旅游路线。
现在小红来到了一个城市,这个城市有 n 个景点,有 m 条路连通这 n 个景点。游览景点 i 花费的时间为 ti ,获得的快乐值为 hi 。
第 i 条路连通 ui 和 vi 这两个景点(ui=vi),通过这条路花费的时间为 wi 。
小红精力有限,所以至多只会游览 3 个景点,且这 3 个景点是相邻的,一天游览和交通所需的时间不能超过 k 。
现在,小红想问你,在给定的时间下,通过游览景点可以获得的最大快乐值是多少。
输入描述
第一行,输入三个整数 n,m,k(1≤n,m≤105,1≤k≤109),表示景点数,路径数和最大交通时间。
第二行输入 n 个整数,表示每个景点的快乐值 hi(1≤hi≤109)
第三行输入 n 个整数,表示游览每个景点的时间 ti(1≤ti≤109)
接下来 m 行,第 i 行三个数 ui,vi,wi(1≤ui,vi≤n,1≤wi≤109) 表示两个景点和通过这条路径花费的时间。
输出描述
一个整数,表示在给定的时间下,通过游览景点可以获得的最大快乐值。
样例
输入
4 3 10
10 9 8 7
1 2 3 4
1 2 1
2 3 1
3 4 10
输出
27