题目描述
输入描述:
输出描述:
示例1
输入
3
4
0 1 2
4
0 1 1
2
0
输出
48
60
2
说明
题目大意
这道题是从同一场的G题改过来的(顺手骗一下访问量,G题题解),给定一棵树。每个节点会有不同的颜色(即1 ~ n),然后又是很玄幻的建边。现有一个操作序列 p p p,按其顺序对树进行颜色的扩张染色(具体可以看上面G题题解里有详细的简绍),如果对于 p i p_i pi,在当前的树上能找到这种颜色并染色,那么我们称这个操作是成功的,否则是失败的。
要求你对于 p { 1 , 2 , . . . , n } p\{1,2,...,n\} p{
1,2,...,n}的每种排列,都求出每个操作序列里成功的操作数,并求和输出。
分析
嗯……题目有点绕,让我们找个简单的例子来试试。
嗯,这个够简单了吧。首先我们拿一个序列来试水:
p = { 1 , 2 , 3 } p=\{1,2,3\} p={
1,2,3},那么一次操作后,1把它周围的点全部染成了1,此时1是成功的,对于2,3的操作是失败的。所以 p = { 1 , 2 , 3 } p=\{1,2,3\} p={
1,2,3}的答案是1。
同样的,若 p = { 2 , 1 , 3 } p=\{2,1,3\} p={
2,1,3},那么答案是2,因为2和3均可以做到染色。
一下列出所有的 p p p。
{ 1 , 2 , 3 } = 1 \{1,2,3\}=1 {
1,2,3}=1 \qquad { 1 , 3 , 2 } = 1 \{1,3,2\}=1 {
1,3,2}=1 \qquad { 2 , 1 , 3 } = 2 \{2,1,3\}=2 {
2,1,3}=2
{ 2 , 3 , 1 } = 2 \{2,3,1\}=2 {
2,3,1}=2 \qquad {