#P16294. [蓝桥杯 2026 省 Java A 组] 子树染色

    ID: 18309 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>动态规划 DP树形 DP2026蓝桥杯省赛

[蓝桥杯 2026 省 Java A 组] 子树染色

题目描述

给定一棵有 nn 个结点的树,结点编号为 11nn,其中结点 11 是树根。现在需要在这棵树上选择一些结点进行染色。

树上有 mm 个关键结点。对于每个关键结点 xx,设其子树大小为 ss(子树包含 xx 本身及其所有后代),则以 xx 为根的子树中,被染色的结点数必须不少于 s2\lceil \frac{s}{2} \rceil

请你求出,在满足所有关键结点要求的前提下,最少需要染色多少个结点。

输入格式

输入共 n+1n + 1 行。

第一行包含两个整数 n,mn, m,分别表示结点总数和关键结点数量;

第二行包含 mm 个互不相同的整数,表示所有关键结点的编号;

接下来 n1n - 1 行,每行包含两个整数 a,ba, b,表示结点 aa 和结点 bb 之间有一条边。

输出格式

输出一个整数,表示最少需要染色的结点总数。

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

提示

【样例说明】

一种最优方案是将结点 4,5,7,9,104,5,7,9,10 染色,共 55 个结点。

【评测用例规模与约定】

对于 30%30\% 的评测用例,1n2001 \le n \le 200

对于所有的评测用例,1mn1000001 \le m \le n \le 1000001a,bn1 \le a, b \le n