트리로 만드는 힙

각 노드에 값이 있는 루트 트리에서, 조상과 자손 관계인 모든 쌍이 조상의 값이 더 크도록 하는 가장 큰 부분집합의 크기를 구한다.

보통7트리동적 계획법그리디정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

노드가 nn개인 루트 있는 트리가 주어진다. 노드에는 11부터 nn까지 번호가 붙어 있고 11번 노드가 루트이다. 각 노드 ii에는 값 viv_i가 적혀 있다.

이 트리를 힙으로 만들려고 한다. 즉 다음 힙 성질을 만족하는 노드 부분집합 중 가장 큰 것을 고르려고 한다. 부분집합에 속한 모든 노드 쌍 i,ji, j에 대해, 트리에서 노드 ii가 노드 jj의 조상이라면 vi>vjv_i > v_j이어야 한다.

값이 같은 경우는 허용되지 않는다. 이런 부분집합으로 고를 수 있는 노드 개수의 최댓값을 구하라. 고른 부분집합이 서브트리를 이룰 필요는 없다.

입력

입력은 테스트 케이스 하나로 이루어진다.

첫째 줄에 트리의 노드 개수 nn (1n2×1051 \le n \le 2 \times 10^5)이 주어진다. 노드 번호는 11부터 nn까지이다.

다음 nn개의 줄에는 노드 정보가 번호 순서대로 주어진다. ii번째 줄에는 두 정수 viv_ipip_i가 주어진다. viv_i (0vi1090 \le v_i \le 10^9)는 노드에 적힌 값이고 pip_i (0pi<i0 \le p_i < i)는 부모 노드의 번호이다. 모든 노드의 번호는 부모 노드의 번호보다 크다. 부모가 없는 루트인 11번 노드만 p1=0p_1 = 0이고, 나머지 노드 (i=2,,ni = 2, \ldots, n)는 1pi<i1 \le p_i < i이다.

출력

힙 성질을 만족하는 부분집합 중 가장 큰 것의 노드 개수를 정수 하나로 출력한다.