#P12640. [UOI 2020] Add edges

    ID: 12479 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>2020提交答案Special JudgeUOI(乌克兰)

[UOI 2020] Add edges

Description

给定一棵包含 nn 个顶点和 n1n-1 条边的树。需要在这棵树上添加恰好 mm 条新边。不允许添加重边或自环。如果某个顶点在添加边之前的度数为 tit_i,那么在添加边之后,其度数不得超过 ti+kt_i + k。注意顶点的度数是指与其相连的边的数量。

此外,给定 m+n1m+n-1 个整数 a1,a2,,am+n1a_1, a_2, \dots, a_{m+n-1}。添加边后,需要为每条边分配数组 aa 中的一个元素,且每个数组元素恰好对应一条边。分配给边的值 aia_i 表示其权重。

需要以如下方式添加新边并为边分配数值:使得所有顶点对之间的最短距离之和 最大化。即需要最大化函数 dij\sum d_{ij},其中 dijd_{ij} 是顶点 iijj1i<jn1 \leq i < j \leq n)之间的最小距离。顶点之间的最小距离是指它们之间简单路径上所有边的权重之和。

请注意,本题不需要提交代码,而是需要提交实际答案。你可以访问所有测试数据。

Input Format

共有 55 个测试用例。

每个测试用例的第一行包含三个整数 nnmmkk1n50001 \leq n \leq 5\,0001m2500001 \leq m \leq 250\,0001k5001 \leq k \leq 500)——树中的顶点数量、需要添加的边数以及每个顶点可以添加的最大边数。

第二行包含 m+n1m+n-1 个整数 a1,a2,,am+n1a_1, a_2, \dots, a_{m+n-1}1ai1061 \leq a_i \leq 10^6)。

接下来的 n1n-1 行,每行包含两个整数 viv_iuiu_i1vi,uin1 \leq v_i, u_i \leq n)——表示初始树中相连的顶点编号。保证初始给定的图是一棵树。

保证总能以符合题目要求的方式添加边。

Output Format

对于每个测试用例,输出以下内容:

如果你有该测试用例的答案,输出 11,否则输出 00

如果有答案,则在接下来的 m+n1m+n-1 行中,每行输出三个整数 viv_iuiu_iaia_i——表示最终图中相连的顶点编号及其边的权重。

Hint

d0d_0 是测试用例中的某个基准值,dd 为你的图中所有顶点对距离之和。如果 d>d0d > d_0,你将获得该测试用例的 2020 分。否则,你将获得的分数为:

(100(dd0)/d0)520(100^{(d-d_0)/d_0})^5 \cdot 20

如果 ss 是所有测试用例得分的总和,则本次提交将获得四舍五入后的整数 ss 分。