#P3060. [USACO12NOV] Balanced Trees G

[USACO12NOV] Balanced Trees G

Description

Fascinated by his experience with balanced parentheses so far, Farmer John is curious if you can help him solve one final problem. As it turns out, FJ's farm is in the shape of a giant tree of N pastures (1N40,000)(1\le N\le40,000), each of which he has labeled with either ( or ). For example:

'('--'('--')'--'('--')'
 |         |
')'       ')'--'('--'(' 
 |              |
')'            '('--')'--')'--')'--'('

Recall that since his farm is a tree, this means that certain pairs of pastures are connected by corridors so that there is one unique path between any given pair of pastures. FJ believes that some of these paths represent balanced strings of parentheses. In particular, he would like to know, among all such balanced strings represented by paths through the tree, what is the maximum nesting depth one can find. The nesting depth of a balanced string of parentheses is the maximum, over all prefixes of the string, of the excess number of ('s within the prefix. For example, the string ()()() has nesting depth 11, but the string ((()))() has nesting depth 33, as we can see clearly if we count excess ('s for every prefix of the string:

((()))()
12321010

For the example farm above, the deepest string is ((())) with a depth of 33, and can be obtained by taking the path from AA to BB below:

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

Note that this is different than the longest balanced string; for instance (())(()), starting at AA and ending at CC, has length 88.

Your task is to output the nesting depth of the deepest balanced path in the tree.

Input Format

* Line 11: A single integer NN, the number of nodes in the tree.

* Lines 2N2\dots N: Line i+1i+1: A single integer pi+1(1pi+1i)p_{i+1}(1\le p_{i+1}\le i), denoting an edge between nodes i+1i+1 and pi+1p_{i+1} in the tree.

* Lines N+12NN+1\dots 2N: Line N+iN+i: Either ( or ), the label of node ii.

Output Format

* Line 11: A single integer, giving the maximum nesting depth of a balanced path.

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

3 

Hint

This is the example from the problem description, with the following node labels:

1'('--4'('--6')'--7'('--8')' 
|     |
2')'  5')'--9'('--10'(' 
|           |
3')'       11'('--12')'--13')'--14')'--15'('