#2107. Balanced Trees

Balanced Trees

题目描述

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

'(\red{(}'\red{--}'(\red{(}'\red{--}')\red{)}'\red{--}'(\red{(}'\red{--}')\red{)}'

\red{| |}

')\red{)}' ')\red{)}'\red{--}'(\red{(}'\red{--}'(\red{(}'

\red{| |}

')\red{)}' '(\red{(}'\red{--}')\red{)}'\red{--}')\red{)}'\red{--}')\red{)}'\red{--}'(\red{(}'

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

((()))()\red{((()))()}

12321010\red{12321010}

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



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


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

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

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

输入格式

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

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

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

输出格式

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

样例

输入样例

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

输出样例

3

提示

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

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

\red{| |}

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

\red{| |}

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