만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

트리로 만드는 힙

시간 제한2초메모리 제한512 MB

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

보통10점 중 7점

유형
트리, 동적 계획법, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

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

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

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

입력

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

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

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

출력

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

예제4

  1. 예제 1

    입력
    5
    3 0
    3 1
    3 2
    3 3
    3 4
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5
    4 0
    3 1
    2 2
    1 3
    0 4
    
    예상 출력
    5
    
  3. 예제 3

    입력
    6
    3 0
    1 1
    2 1
    3 1
    4 1
    5 1
    
    예상 출력
    5
    
  4. 예제 4

    입력
    11
    7 0
    8 1
    5 1
    5 2
    4 2
    3 2
    6 3
    6 3
    10 4
    9 4
    11 4
    
    예상 출력
    7