#P5519. Balanced Trees

Balanced Trees

题目描述

FarmerJohn{Farmer John }对他迄今为止对平衡括号的体验着迷,很好奇您是否可以帮助他解决最后一个问题。事实证明,FJ{FJ }的农场是一棵有 N{N }个牧场的巨树(1<=N<=40,000{1 <= N <= 40,000)},每个牧 场他都用 ({( }){) }标记。例如:

'({(}'{--}'({(}'{--}'){)}'{--}'({(}'{--}'){)}'

{| |}

'){)}' '){)}'{--}'({(}'{--}'({(}'

{| |}

'){)}' '({(}'{--}'){)}'{--}'){)}'{--}'){)}'{--}'({(}'

回想一下,由于他的农场是一棵树,这意味着某些对牧场由走廊连接,因此在任何给定牧场之间都有一条独特的路径。FJ{FJ }认为其中一些路径代表平衡的括号串。特别是,他想知道,在所有由通过树的路径表示的平衡字符串中,可以找到的最大嵌套深度是多少。平衡的括号字符串的嵌套深度是在字符串的所有前缀中,前缀中多余的 ({(}'s{s }数量的最大值。例如,字符串 ()()(){()()() }的嵌套深度为 1{1,}但字符串 ((()))(){((()))() }的嵌套深度为 3{3,}如果我们为字符串的每个前缀计算多余的 (){(),}我们可以清楚地看到:

((()))(){((()))()}

12321010{12321010}

对于上面的示例农场,最深的字符串是 ((())){((())),}深度为 3{3,}可以通过以下从 A{A }B{B }的路径获得:



'('--'('--')'--'('--')'
|         |
')'       ')'--'('--'(' < A
|              |
')'            '('--')'--')'--')'--'('
^C                            ^B


请注意,这与最长的平衡字符串不同;例如 (())(()){(())(()),}A{A }开始到 C{C }结束,长度为 8{8}

你的任务是输出树中最深平衡路径的嵌套深度。

给出一棵树,每个结点上有一个括号。问在所有括号平衡的路径中,最大嵌套层数为多少。

输入格式

1{1 }行:单个整数 N{N,}树中的节点数。

2..N{2..N }行:第 i+1{i+1 }行:单个整数 p(i+1)(1<=p(i+1)<=i){p_(i+1) (1 <= p_(i+1) <= i),}表示节点 i+1{i+1 }p_{i+1{p \_ \{i+1 }之间的边}{\} }在树上。

LinesN+1..2N:LineN+i:{Lines N+1..2N: Line N+i: }要么 ({( }要么 ){),}节点 i{i }的标签。

输出格式

1{1 }行:单个整数,给出平衡路径的最大嵌套深度。

样例

输入样例

15 
1 
2 
1
4 
4
6 
7 
5 
9 
9
11 
12 
13 
14 
( 
) 
)
(
)
)
(
)
(
(
(
)
)
)
(

输出样例

3

提示

这是问题描述中的示例,具有以下节点标签:

1{1}'({(}'4{--4}'({(}'6{--6}'){)}'7{--7}'({(}'8{--8}'){)}'

{| |}

2{2}'){)}' 5{5}'){)}'9{--9}'({(}'10{--10}'({(}'

{| |}

3{3}'){)}' 11{11}'({(}'12{--12}'){)}'13{--13}'){)}'14{--14}'){)}'15{--15}'({(}'