题号:NC213912
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
芭芭拉这次来到了一棵字母树,这同样是一棵无根树,每个节点上面有一个小写字母。
芭芭拉想知道,自己从x冲刺到y,从x走到y收集所有字母,选择其中一部分字母组成一个回文串,这个回文串的最大长度是多少?
同样的,芭芭拉冲刺的时候是不能掉头的。
一共有q次询问。每次的询问是独立的(即本次收集字母不影响之后的询问,每次询问时字母都是未被收集状态)。
输入描述:
第一行有一个正整数
。
接下来的
行,每行输入两个正整数
和
,代表
和
之间有一条无向边相连。
接下来一行有一个长度为
的字符串,字符串仅由小写字母构成。第
个字符表示节点
上的字母。
接下来一行是一个正整数
,代表询问次数。
(保证输入一定是一棵树)
%20%5C)
输出描述:
对应每次询问,输出一个正整数,代表回文串的最大长度。
示例1
输入
复制
5
1 2
1 3
2 4
2 5
abcba
3
4 5
1 2
3 3
说明
这棵树的构造如下:
对于第一个询问,芭芭拉冲刺的路径是4-2-5,收集的字母有两个b一个a,可以构建的最长回文串是"bab",长度为3。
对于第二个询问,芭芭拉冲刺的路径是1-2,收集的字母有一个b一个a,可以构建的最长回文串是"a"(也可以是"b"),长度为1。
对于第三个询问,芭芭拉起点和终点都是3,所以站在原地不动,收集的字母有只有一个c,可以构建的最长回文串是"c",长度为1。