bzoj#P3303. [Shoi2005] 最节俭演化树

[Shoi2005] 最节俭演化树

题目描述

给定一棵树 T=(V,E)T=(V,E),其中 VV 为节点集合,EE 为边集合。每节点 vv 都可以用 {A,B,,Z}\{\texttt{A},\texttt{B},\ldots ,\texttt{Z}\} 的一个子集(可以为空)标记。记 vv 上标记的几何为 L(v)L(v)。定义边 e=(u,v)e=(u,v) 的权值 W(e)W(e)L(u)L(u)L(v)L(v) 的相差成都(Hamming 距离),严格地说:

$$W(e)=\left|\{X|X\in L(u)\text{ and }X\notin L(v)\}\cup\{Y|X\notin L(u)\text{ and }X\in L(v)\}\right|. $$

例如:$L(u)=\{\texttt{A},\texttt{B},\texttt{C},\texttt{D},\texttt{E}\}$,而 $L(v)=\{\texttt{B},\texttt{D},\texttt{E},\texttt{F}\}$,则对于 e=(u,v)e=(u,v) 来说,W(e)={A,C,F}=3W(e)=|\{\texttt{A},\texttt{C},\texttt{F}\}|=3

你的任务是:已知一棵无根树以及所有叶节点的标记集合,求一种内部节点的标记方案,使得所有边的权值的和最小

例如给定图 1 中的树以及叶节点标记集合,我们可以得到图 2 或者图 3 的内部节点标记方案(注意,不只这两种,其他的没有列举出来)。图 2 的边权和为 66。图 3 的边权和为 44。其中图 3 的标记方案是最优的。

输入格式

第一行为 NNLL,分别表示树的节点数目和叶节点的数目。

树的节点用 1N1\sim N 编号,接下来 N1N-1 行,每个两个整数 u,vu,v,表示 uuvv 之间有边。

接着 LL 行,每行一个整数和一个字符串,整数表示叶子节点的编号,字符串表示此个点的标记集合,需要注意的是节点的标记集合可以是空集,对应字符串为 $

输出格式

输出能实现的最小边权和。

6 4
1 3
2 4
3 4
5 3
4 6
1 AC
2 AB
5 BC
6 B

4

数据规模与约定

对于 100%100\% 的数据,1N5×1041\leq N\leq 5\times 10^4