3602: [CSP-S 2022] 假期计划holiday.cpp

内存限制:512 MB 时间限制:2.000 S
评测方式:文本比较 命题人:
提交:1 解决:0

题目描述

小熊的地图上有 nnn 个点,其中编号为 111 的是它的家、编号为 2,3,…,n2, 3, \ldots, n2,3,,n 的都是景点。部分点对之间有双向直达的公交线路。如果点 xxxz1z_1z1z1z_1z1z2z_2z2、……、zk−1z_{k - 1}zk1zkz_kzkzkz_kzkyyy 之间均有直达的线路,那么我们称 xxxyyy 之间的行程可转车 kkk 次通达;特别地,如果点 xxxyyy 之间有直达的线路,则称可转车 000 次通达。
很快就要放假了,小熊计划从家出发去 444不同的景点游玩,完成 555 段行程后回家:家 →\to 景点 A →\to 景点 B →\to 景点 C →\to 景点 D →\to 家且每段行程最多转车 kkk 次。转车时经过的点没有任何限制,既可以是家、也可以是景点,还可以重复经过相同的点。例如,在景点 A →\to 景点 B 的这段行程中,转车时经过的点可以是家、也可以是景点 C,还可以是景点 D →\to 家这段行程转车时经过的点。
假设每个景点都有一个分数,请帮小熊规划一个行程,使得小熊访问的四个不同景点的分数之和最大。

输入

从文件 holiday.in 中读入数据。
第一行包含三个正整数 n,m,kn, m, kn,m,k,分别表示地图上点的个数、双向直达的点对数量、每段行程最多的转车次数。
第二行包含 n−1n - 1n1 个正整数,分别表示编号为 2,3,…,n2, 3, \ldots, n2,3,,n 的景点的分数。
接下来 mmm 行,每行包含两个正整数 x,yx, yx,y,表示点 xxxyyy 之间有道路直接相连,保证 1≤x,y≤n1 \le x, y \le n1x,yn,且没有重边,自环。

输出

输出到文件 holiday.out 中。

输出一个正整数,表示小熊经过的 44 个不同景点的分数之和的最大值

样例输入 复制

8 8 1
9 7 1 8 2 3 6
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 1

样例输出 复制

27

提示

输入 #2复制
7 9 0
1 1 1 2 3 4
1 2
2 3
3 4
1 5
1 6
1 7
5 4
6 4
7 4
输出 #2复制
7

说明/提示

【样例解释 #1】

当计划的行程为 1 \to 2 \to 3 \to 5 \to 7 \to 1123571 时,44 个景点的分数之和为 9 + 7 + 8 + 3 = 279+7+8+3=27,可以证明其为最大值。

行程 1 \to 3 \to 5 \to 7 \to 8 \to 1135781 的景点分数之和为 2424、行程 1 \to 3 \to 2 \to 8 \to 7 \to 1132871 的景点分数之和为 2525。它们都符合要求,但分数之和不是最大的。

行程 1 \to 2 \to 3 \to 5 \to 8 \to 1123581 的景点分数之和为 3030,但其中 5 \to 858 至少需要转车 22 次,因此不符合最多转车 k = 1k=1 次的要求。

行程 1 \to 2 \to 3 \to 2 \to 3 \to 1123231 的景点分数之和为 3232,但游玩的并非 44 个不同的景点,因此也不符合要求。