#L3384. 「COCI 2020.11」Sjekira

「COCI 2020.11」Sjekira

题目描述

译自 COCI 2020/2021 Contest #2 T4「Sjekira」

Mirko 厌倦了他在一家大型跨国软件公司担任 CEO 的生活。带着几百万美元的资产,他决定辞掉自己的工作,转而搬到一个叫做 Gorski Kotar 的小村庄去过一个清闲的生活。不幸的是,那里的冬天寒冷又漫长,生活并不容易。他的邻居都在二战以前出生的事实,注定了他只能自己去砍柴。

今天,Mirko 要开始砍第一棵树。在开始工作之前,他标记了这棵树各部分的硬度。

作为一名程序员,Mirko 很快注意到这棵树的各部分形成了一个树形结构。他还发现,砍断这棵树上某条边对他斧头的损害值,等于砍断这条边后形成的两个联通分量中,各联通分量中硬度最大值的和。

因为 Mirko 只有一把斧头,因此他希望砍掉这棵树对斧头的损害值最小。现在你需要帮他求出,将整棵树切割成单个部分对斧头造成的最小损害值。

输入格式

输入第一行一个整数 nn,代表这棵树由 nn 部分组成。

第二行 nn 个整数,第 ii 个整数 tit_i 表示第 ii 部分的硬度。

接下来 n1n-1 行,每行两个整数 u,vu,v,代表 uuvv 这两个部分间有一条边相连。

输出格式

输出一个整数,代表 Mirko 将整棵树切割成单个部分对斧头造成的最小损害值。

样例 1

  • 输入: 33 11 22 33 11 22 22 33
  • 输出:88

一种方案是先砍掉 (1,2)(1,2) 边,花费为 1+3=41+3=4,再砍掉 (2,3)(2,3) 边,花费为 2+3=52+3=5,总花费为 99,但该方案不是最优方案。

最优方案是先砍掉 (2,3)(2,3) 边,花费为 2+3=52+3=5,再砍掉 (1,2)(1,2) 边,花费为 1+2=31+2=3,总花费为 88

样例 2

  • 输入: 44 22 22 33 22 11 33 33 22 44 33
  • 输出:1515

样例 3

  • 输入: 55 55 22 33 11 44 22 11 33 11 22 44 22 55
  • 输出:2626

数据范围与提示

所有数据均满足:1n1051 \leq n \leq 10^51ti1091 \leq t_i \leq 10^9

各子任务的分值和约束条件如下:

子任务编号 约束 分值
1 n10n \leq 10 1010
2 i[1,n1]\forall i \in [1,n-1]iii+1i+1 之间有一条边直接相连 2020
3 n103n \leq 10^3 2525
4 无附加约束 5555