← Home
write a go solution for Description:
This is the hard version of the problem. The differences between the two versions are the constraint on n and the time limit. You can make hacks only if both versions of the problem are solved.

You are given a tree with n vertices rooted at vertex 1.

For some permutation^dagger a of length n, let f(a) be the number of pairs of vertices (u,v) such that a_u<a_operatornamelca(u,v)<a_v. Here, operatornamelca(u,v) denotes the lowest common ancestor of vertices u and v.

Find the maximum possible value of f(a) over all permutations a of length n.

^dagger A permutation of length n is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array), and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).

Input Format:
The first line contains a single integer n (2<=n<=10^6).

The second line contains n-1 integers p_2,p_3,ldots,p_n (1<=p_i<i) indicating that there is an edge between vertices i and p_i.

Output Format:
Output the maximum value of f(a).

Note:
The tree in the first test:

One possible optimal permutation a is [2,1,4,5,3] with 4 suitable pairs of vertices:

- (2,3), since operatornamelca(2,3)=1 and 1<2<4,
- (2,4), since operatornamelca(2,4)=1 and 1<2<5,
- (2,5), since operatornamelca(2,5)=1 and 1<2<3,
- (5,4), since operatornamelca(5,4)=3 and 3<4<5.

The tree in the third test:

The tree in the fourth test:. Output only the code with no comments, explanation, or additional text.