本题要求我们在给定的树上给每个结点分配字母,目标是使得“回文路径”的最大长度(树的权值)达到最大。
实际上我们可以证明:
因此问题转化为:
在全局给定的字母个数下,能构成的最长回文串长度是多少?
对于任意一个字母集合,要构成回文串,其要求是:
小红定义一棵树的权值为:
若一条简单路径u→v满足su+...+sv,是一个回文串。在所有这样的路径中,路径的长度的最大值是是该树的权值。现在小红给定一棵结点总数为n的树和 'a','b','c',...,'z'每种字母的个数,保证所有个数之和恰好等于n。
你需要将每个字母填入一个树的结点,使得该树的权值最大,输出树的最大权值。
第一行输入一个长度为26的用,表示每个字母的个数,保证总和为
第二行输入一个整数n(1≤n≤105),表示的结点总数。
接下来n−1行,每行输入两个整数
u,v(1≤u,v≤n,u=v),表示树的一条边。
输出一个整数,表示树的最大权值。
输入
1 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
5
1 2
2 3
3 4
4 5
输出
3