#P2525. 子树染色

子树染色

题目描述

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

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

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

输入格式

输入共 n+1n + 1 行。

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

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

接下来 n−1n - 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\% 的评测用例,1≤n≤2001 \le n \le 200;

对于所有的评测用例,1≤m≤n≤1000001 \le m \le n \le 100000,1≤a,b≤n1 \le a, b \le n。