#SLT08D. 2026年S组模拟赛10连测第8场-T4 程老师的区域封锁

2026年S组模拟赛10连测第8场-T4 程老师的区域封锁

项目 内容
输入文件名 blockade.in
输出文件名 blockade.out
可执行文件名 blockade
每个测试点时限 1.0 秒
内存限制 512 MiB
测试点数目 20
是否等分 是

结果比较方式为全文比较(过滤行末空格及文末换行)。

题目描述

程老师分管一片值守区域。区域里一共有 nn 个节点,编号 11 到 nn,其中 11 号是总控中心。节点之间铺设了 n−1n-1 条链路,铺法保证任意两个节点之间恰有一条通路(沿链路走,不重复经过任何节点)。

总控中心把命令一级一级往下传。除 11 号以外,每个节点都有唯一的上级:从它出发,沿唯一的那条通路走向 11 号,紧邻它、且更靠近 11 号的那个节点就是它的上级;反过来,若节点 xx 的上级是 yy,就说 xx 是 yy 的下级。除 11 号以外,没有下级的节点称为末梢节点。

一次封锁行动中,程老师可以选定任意若干个节点封锁(一个节点都不封也可以),封锁节点 ii 的代价是 wiw_i。行动有一条硬性要求:每一条从某个末梢节点到总控中心的通路上(通路包含两端节点在内),至少要有一个节点被封锁。

在满足这条要求的前提下,程老师希望总代价尽可能小;如果有多套封锁方案的总代价相同,他希望封锁的节点数尽可能少。请你给出这套封锁方案的总代价与封锁的节点数。

输入格式

从文件 blockade.in 中读入数据。

  • 第一行一个整数 nn;
  • 第二行 nn 个整数 w1,w2,…,wnw_1, w_2, \dots, w_n,其中 wiw_i 表示封锁节点 ii 的代价;
  • 接下来 n−1n-1 行,每行两个整数 u,vu, v,表示节点 uu 与节点 vv 之间有一条链路。

输出格式

输出到文件 blockade.out 中。

输出一行两个整数,中间用一个空格隔开:最小的总代价,以及在总代价最小的前提下最少的封锁节点数。

样例

5
10 5 4 3 2
1 2
1 3
3 4
3 5
9 2

样例 1 解释

节点 2,4,52, 4, 5 都没有下级,是仅有的三个末梢节点(11 号是总控中心,不算末梢),因此通路 2→12 \to 1、4→3→14 \to 3 \to 1、5→3→15 \to 3 \to 1 都必须被覆盖。若只封锁 11 号,三条通路一条不落,代价 1010,封锁 11 个节点;若改封锁 33 号,代价 44,通路 4→3→14 \to 3 \to 1 与 5→3→15 \to 3 \to 1 一并被覆盖,比分别封锁 44 号与 55 号(3+2=53 + 2 = 5)更划算。剩下通路 2→12 \to 1 上只有 22 号与 11 号两个节点,封锁 22 号代价 55,封锁 11 号代价 1010,取 22 号。于是封锁 22 号与 33 号,总代价 5+4=95 + 4 = 9,封锁 22 个节点,比只封锁 11 号的代价 1010 更低。

2
3 7
1 2
3 1

样例 2 解释

区域里只有两个节点:22 号的上级是 11 号,而 22 号没有下级,所以 22 号是唯一的末梢节点,通路 2→12 \to 1 上只有 11 号与 22 号这两个节点。封锁 22 号代价 77,封锁 11 号代价 33,两种方案都只封锁 11 个节点,取代价较小的那种,于是总代价为 33、封锁节点数为 11。

数据范围

对于所有测试数据,保证:

  • 2≤n≤1052 \le n \le 10^5,1≤wi≤1041 \le w_i \le 10^4;
  • 链路连接的两个节点编号不同,且任意两个节点之间恰有一条通路。

各测试点的约束如下:

测试点 n≤n \le 特殊性质
1∼21\sim 2 1010 无
3∼63\sim 6 2020
7∼107\sim 10 500500
11∼1411\sim 14 20002000
15∼1815\sim 18 10510^5
1919 A
2020 B
  • 特殊性质 A:每个节点至多只有一个下级节点。
  • 特殊性质 B:所有节点的封锁代价都相等。
难度 未评定
通过率 —
尝试 0
通过 0
ID
3800
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者