404003 - 对称二叉树

一棵有点权的有根树如果满足以下条件,则被称为对称二叉树: (1)二叉树; (2)将这棵树所有结点的左右子树交换,新树和原树对应位置的结构相同且点权相等。 图4.13中结点内的数字为权值,结点外的id表示结点编号。 现在给出一棵二叉树,希望你找出它的一棵子树,该子树为对称二叉树,且结点数最多。 注意:只有树根的树也是对称二叉树。本题中约定,以结点T为子树根的一棵“子树”指的是:结点T和它的全部后代结点构成的二叉树。

输入

第一行一个正整数n(n≤106),表示给定的树的结点的数目,规定结点编号1∼n,其中结点1是树根。 第二行n个正整数,用一个空格分隔,第i个正整数vi(vi≤1 000)代表结点i的权值。 接下来n行,每行两个正整数li,ri,分别表示结点i的左右子结点的编号。如果不存在左/右子结点,则以-1表示。两个数之间用一个空格隔开。

输出

输出文件共一行,包含一个整数,表示给定的树的最大对称二叉子树的结点数。

样例

输入

2 
1 3 
2 -1 
-1 -1

输出

1

输入

10 
2 2 5 5 5 5 4 4 2 3 
9 10 
-1 -1 
-1 -1 
-1 -1 
-1 -1 
-1 2 
3 4 
5 6 
-1 -1 
7 8

输出

3

提示

最大的对称二叉子树为以结点7为树根的子树,结点数为3

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题