만드는 중입니다

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

너도밤나무

시간 제한1초메모리 제한1024 MB

요약
각 노드 r에 대해 그 서브트리 T(r)이 아름다운 서브트리인지 판단합니다.
난이도

어려움10점 중 9점

유형
트리, DFS, 그리디, 해시맵
정답자
아직 제출이 없습니다

문제

Vétyem 숲은 색이 다양한 나무가 많기로 유명한 숲이다. 이 숲에서 가장 오래되고 키가 큰 너도밤나무 중 하나를 Ős Vezér라고 부른다.

Ős Vezér는 NN개의 노드와 N−1N-1개의 간선으로 이루어진 트리로 모델링할 수 있다. 노드는 00부터 N−1N-1까지 번호가 붙고, 간선은 11부터 N−1N-1까지 번호가 붙는다. 각 간선은 서로 다른 두 노드를 잇는다. 구체적으로, 간선 ii (1≤i<N1 \le i < N)는 노드 ii와 노드 P[i]P[i]를 잇는다. 여기서 0≤P[i]<i0 \le P[i] < i이다. 노드 P[i]P[i]를 노드 ii의 부모라 하고, 노드 ii를 노드 P[i]P[i]의 자식이라 한다.

각 간선에는 11부터 MM까지의 색이 하나씩 있다. 간선 ii의 색은 C[i]C[i]이다. 서로 다른 간선이 같은 색을 가질 수 있다. 편의상 P[0]=−1P[0] = -1, C[0]=0C[0] = 0으로 둔다. 다만 노드 00의 위쪽에는 간선이 없다.

예를 들어 Ős Vezér의 노드가 N=18N = 18개이고 색이 M=3M = 3가지이며, P=[−1,0,0,0,1,1,1,2,2,3,3,3,4,4,5,10,11,11]P = [-1, 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 10, 11, 11], C=[0,1,2,3,1,2,3,1,3,3,2,1,1,2,2,1,2,3]C = [0, 1, 2, 3, 1, 2, 3, 1, 3, 3, 2, 1, 1, 2, 2, 1, 2, 3]라고 하자. 이 트리는 아래 그림과 같다.

Árpád는 부분트리를 연구한다. 0≤r<N0 \le r < N인 각 rr에 대해, 노드 rr의 부분트리는 다음 성질을 만족하는 노드들의 집합 T(r)T(r)이다. 노드 rr은 T(r)T(r)에 속한다. T(r)T(r)에 속한 노드 xx의 자식은 모두 T(r)T(r)에 속한다. 그 밖의 노드는 T(r)T(r)에 속하지 않는다. T(r)T(r)의 크기는 ∣T(r)∣|T(r)|로 쓴다.

rr을 고정하고 T(r)T(r)의 노드들을 나열한 순열 v0,v1,…,v∣T(r)∣−1v_0, v_1, \ldots, v_{|T(r)|-1}을 생각하자. 1≤i<∣T(r)∣1 \le i < |T(r)|인 각 ii에 대해, f(i)f(i)는 색 C[vi]C[v_i]가 수열 C[v1],C[v2],…,C[vi−1]C[v_1], C[v_2], \ldots, C[v_{i-1}]에 나타나는 횟수이다. f(1)f(1)은 항상 00이다.

다음 두 조건이 모두 성립하면 이 순열은 아름다운 순열이다.

  • v0=rv_0 = r이다.
  • 1≤i<∣T(r)∣1 \le i < |T(r)|인 각 ii에 대해, viv_i의 부모는 vf(i)v_{f(i)}이다.

T(r)T(r)의 노드들에 대한 아름다운 순열이 존재할 때, 그리고 그때에만 T(r)T(r)은 아름다운 부분트리이다. 노드가 하나뿐인 부분트리는 항상 아름답다.

예시 트리에서 T(0)T(0)과 T(3)T(3)은 아름답지 않다. T(14)T(14)는 노드가 하나뿐이므로 아름답다. T(1)T(1)도 아름답다. 수열 [v0,v1,v2,v3,v4,v5,v6]=[1,4,5,12,13,6,14][v_0, v_1, v_2, v_3, v_4, v_5, v_6] = [1, 4, 5, 12, 13, 6, 14]는 T(1)T(1)의 노드들을 나열한 순열이다. 아래 그림에서 각 노드의 라벨은 그 노드가 순열에서 놓인 인덱스이다.

이 순열을 확인해 보자. v0=1v_0 = 1이다. C[v1]=C[4]=1C[v_1] = C[4] = 1은 빈 수열에 00번 나타나므로 f(1)=0f(1) = 0이고, 노드 44의 부모는 노드 11이다. C[v2]=C[5]=2C[v_2] = C[5] = 2는 [1][1]에 00번 나타나므로 f(2)=0f(2) = 0이고, 노드 55의 부모는 노드 11이다. C[v3]=C[12]=1C[v_3] = C[12] = 1은 [1,2][1, 2]에 1번 나타나므로 f(3)=1f(3) = 1이고, 노드 1212의 부모는 노드 44이다. C[v4]=C[13]=2C[v_4] = C[13] = 2는 [1,2,1][1, 2, 1]에 1번 나타나므로 f(4)=1f(4) = 1이고, 노드 1313의 부모는 노드 44이다. C[v5]=C[6]=3C[v_5] = C[6] = 3은 [1,2,1,2][1, 2, 1, 2]에 00번 나타나므로 f(5)=0f(5) = 0이고, 노드 66의 부모는 노드 11이다. C[v6]=C[14]=2C[v_6] = C[14] = 2는 [1,2,1,2,3][1, 2, 1, 2, 3]에 2번 나타나므로 f(6)=2f(6) = 2이고, 노드 1414의 부모는 노드 55이다. 이 순열은 아름다우므로 T(1)T(1)은 아름답다.

Ős Vezér의 모든 부분트리에 대해 아름다운 부분트리인지 판정하라.

제한

  • 3≤N≤200 0003 \le N \le 200\,000
  • 2≤M≤200 0002 \le M \le 200\,000
  • 0≤P[i]<i0 \le P[i] < i (1≤i<N1 \le i < N인 각 ii에 대해)
  • 1≤C[i]≤M1 \le C[i] \le M (1≤i<N1 \le i < N인 각 ii에 대해)
  • P[0]=−1P[0] = -1, C[0]=0C[0] = 0

예제1

  1. 예제 1

    입력
    3 2
    0 0
    1 2
    
    예상 출력
    111