만드는 중입니다

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

Challenge NPC

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

요약
루트를 지우지 않고 트리 G에서 노드를 삭제해 연결된 결과가 트리 H와 동형이 되는지 판별합니다.
난이도

어려움10점 중 8점

유형
트리, 동적 계획법, 해시맵
정답자
아직 제출이 없습니다

문제

두 루트 트리 GG와 HH가 주어진다. ∣G∣|G|는 트리 GG의 노드 수이며, 두 트리는 1≤∣H∣≤∣G∣≤∣H∣+k1 \le |H| \le |G| \le |H| + k를 만족한다. 여기서 kk는 작은 상수이다. GG의 노드 일부를 삭제할 수 있고, 삭제 후 남은 부분 그래프를 G′G'라 하자. 다음 조건을 모두 만족하도록 노드를 삭제할 수 있는지 판단하라.

  • G′G'는 연결되어 있다.
  • G′G'는 GG의 루트 노드를 포함한다. 즉, 루트 노드는 삭제되지 않는다.
  • G′G'와 HH는 동형이다. 즉, G′G'의 노드에 번호를 다시 붙여 결과가 HH와 완전히 같아지게 할 수 있고, 이때 GG의 루트 노드가 HH의 루트가 된다.

입력

입력에는 여러 개의 테스트 데이터가 들어 있다. 첫 줄에 양의 정수 CC, TT와 음이 아닌 정수 kk가 주어진다. CC는 현재 테스트 번호, TT는 테스트 데이터 그룹 수, kk는 문제에서 주어진 상수이다. C=0C = 0이면 현재 데이터는 예제이다. T≤500T \le 500, k≤5k \le 5가 보장된다.

각 테스트 데이터는 다음과 같다.

  • 첫 줄에 양의 정수 n1n_1이 주어진다. 1≤n1≤1051 \le n_1 \le 10^5이며, 모든 n1n_1의 합은 5×1055 \times 10^5 이하이다.
  • 둘째 줄에 n1n_1개의 정수가 주어진다. ii번째 정수 aia_i는 GG에서 노드 ii의 부모 노드이고, 루트이면 ai=−1a_i = -1이다. 연결된 루트 트리임이 보장된다.
  • 셋째 줄에 양의 정수 n2n_2가 주어진다. max⁡(1,n1−k)≤n2≤n1\max(1, n_1 - k) \le n_2 \le n_1을 만족함이 보장된다.
  • 넷째 줄에 n2n_2개의 정수가 주어진다. 형식은 GG와 같으며 HH의 구조를 나타낸다.

출력

각 테스트 데이터에 대해, 조건을 모두 만족하도록 GG의 노드를 삭제할 수 있으면 Yes, 없으면 No를 한 줄에 출력한다.

제한

모든 테스트 데이터에 대해 1≤T≤5001 \le T \le 500, 1≤n2≤n1≤1051 \le n_2 \le n_1 \le 10^5, ∑n1≤5×105\sum n_1 \le 5 \times 10^5, 0≤k≤50 \le k \le 5이다.

힌트

데이터에는 특정 해시 함수를 겨냥한 구조가 없다. 합리적인 범위에서는 해시 충돌로 점수를 잃는 것을 크게 걱정하지 않아도 된다.

예제1

  1. 예제 1

    입력
    0 3 1
    3
    2 ‐1 2
    2
    ‐1 1
    4
    3 3 ‐1 3
    3
    2 3 ‐1
    5
    ‐1 1 5 5 1
    5
    2 3 ‐1 3
    
    예상 출력
    Yes
    No
    Yes