만드는 중입니다

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

팀 코딩

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

요약
루트가 있는 트리에서 팀장을 골라, 같은 깊이의 사원끼리 교환해 팀장과 같은 언어를 쓰는 사원을 가장 많이 모으고 필요한 교환 횟수를 구합니다.
난이도

보통10점 중 7점

유형
트리, DFS, 이분 탐색, 정렬
정답자
아직 제출이 없습니다

문제

EGOI(Eindhoven Gigantic Open-Source Institute)는 계층 구조가 매우 뚜렷한 회사다. CEO인 Anneke를 제외한 나머지 N−1N-1명의 직원에게는 각자 보고할 직속 상사가 한 명씩 있으며, 계층 구조에 순환은 없다. 회사의 계층 구조는 Anneke를 루트로 하는 트리로 볼 수 있다. 회사는 다양성이 높아서 직원들은 KK가지 프로그래밍 언어 중 하나로 코딩하며, 모든 직원은 선호하는 프로그래밍 언어가 정확히 하나씩 있다.

Anneke에게는 한 팀에 맡길 큰 새 프로젝트가 있다. 그녀는 이 프로젝트에 가능한 한 많은 인력을 투입하려 한다. 팀을 정하기 위해 다음 과정을 따른다.

  1. 팀을 이끌 리더를 한 명 고른다. 리더가 선호하는 프로그래밍 언어가 프로젝트의 구현 언어가 된다. 리더의 서브트리에 있으면서 같은 언어를 선호하는 직원은 모두 프로젝트에 참여한다.
  2. 같은 언어를 선호하는 직원을 팀으로 옮겨 참여 인원을 늘린다. 이를 위해 다음 교환 연산을 원하는 만큼 몇 번이든 할 수 있다.
    1. 두 직원을 고른다.
      1. 리더의 서브트리에 있으면서 리더와 선호 언어가 다른 직원 한 명.
      2. 현재 그 서브트리 밖에 있으면서 리더와 선호 언어가 같은 직원 한 명. 이 직원은 앞서 고른 직원과 같은 레벨이어야 한다. 즉 Anneke까지 이어지는 보고 체인에서 거치는 상사 수가 같아야 하며, 트리로 보면 두 직원은 같은 깊이에 있어야 한다.
    2. 고른 두 직원만 회사 계층에서 자리를 맞바꾼다. 다른 직원은 옮겨지지 않는다. 두 직원에게 보고하던 직원들은 제자리에 있고, 보고 대상만 바뀐다. 아래 그림에서 리더를 직원 4로 정했을 때 직원 3과 2는 교환할 수 있지만 직원 1과 8은 교환할 수 없다.

교환을 몇 번이든 반복해 도달할 수 있는, 리더를 포함한 프로젝트 참여 직원의 최대 인원과 그 인원에 도달하는 데 필요한 최소 교환 횟수를 구하라.

입력

첫 줄에 두 정수 NN과 KK가 주어진다. NN은 EGOI 직원 수, KK는 직원들이 사용할 수 있는 프로그래밍 언어 수다. 직원은 00부터 N−1N-1까지 번호가 붙으며, CEO Anneke의 번호는 00이다. 다음 줄에는 NN개의 정수 ℓi\ell_i(0≤ℓi<K0 \le \ell_i < K)가 주어지며, 이는 각 직원이 선호하는 프로그래밍 언어다. 다음 N−1N-1개의 줄에는 회사 구조가 주어진다. ii번째 줄에는 직원 ii의 직속 상사 bib_i(0≤bi<N0 \le b_i < N)가 정수 하나로 주어진다. ii는 11부터 NN까지이며, CEO인 Anneke는 상사가 없기 때문이다.

출력

정수 두 개 PP와 SS를 한 줄에 출력한다. PP는 교환을 몇 번 하든 도달할 수 있는, 리더를 포함한 프로젝트 참여 직원의 최대 인원이다. SS는 그 인원에 도달하는 데 필요한 교환 횟수의 최솟값이다.

제한

  • 1≤N≤1051 \le N \le 10^5.
  • 1≤K≤N1 \le K \le N.

힌트

처음 두 예시에서 회사 구조는 다음과 같다. 무늬는 프로그래밍 언어를 뜻한다(0은 줄무늬, 1은 점무늬, 2는 무늬 없음).

첫 번째 예시에서 직원 1을 리더로 고르면 같은 언어를 선호하는 직원 4가 함께 참여하며, 더 개선할 교환은 없다. 두 번째 예시에서는 회사 전체에 언어 0을 선호하는 직원이 3명 있는데, 이는 Anneke가 선호하는 언어이기도 하다. Anneke를 리더로 고르면 교환 없이 3명의 팀이 된다.

세 번째 예시에서는 직원 4를 리더로 고른다. 그다음 직원 1과 8, 직원 2와 3이 자리를 맞바꾸면, 직원 4와 같은 언어(언어 2, 노란색 무늬 없음)를 선호하는 직원이 4명이 된다. 네 번째 예시에서는 직원 6을 리더로 고르고, 직원 4와 7, 직원 1과 5를 교환해 최대 인원에 도달한다. 리더를 먼저 정해야 하므로, 리더를 고르기 전에 직원 6과 3을 교환해 4명을 만들 수는 없다.

예제4

  1. 예제 1

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

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

    입력
    9 3
    0 0 2 1 2 0 2 1 2
    4
    8
    1
    0
    4
    1
    0
    7
    
    예상 출력
    4 2
    
  4. 예제 4

    입력
    8 3
    0 2 1 2 2 1 1 1
    6
    3
    0
    6
    3
    0
    3
    
    예상 출력
    3 2