만드는 중입니다

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

수도

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

요약
마을 N개가 트리 모양으로 연결되어 있고 각 마을은 하나의 도시에 속합니다. 어느 도시든 마을들이 서로 연결된 상태가 되도록 하는 최소 병합 횟수를 구합니다.
난이도

보통10점 중 7점

유형
트리, DFS, 그래프
정답자
아직 제출이 없습니다

문제

JOI 왕국에는 1번부터 N번까지 번호가 붙은 N개의 마을이 있다. 마을들은 N−1N - 1개의 도로로 이어져 있다. i번째 도로(1≤i≤N−11 \le i \le N - 1)는 마을 AiA_i와 마을 BiB_i를 잇는다. 모든 도로는 양방향으로 지날 수 있다. 어느 마을에서든 도로를 거쳐 다른 모든 마을로 이동할 수 있다.

현재 JOI 왕국은 1번부터 K번까지 번호가 붙은 K개의 도시로 나뉘어 있다. 마을 j(1≤j≤N1 \le j \le N)는 도시 CjC_j에 속한다. 모든 도시에는 마을이 하나 이상 있다.

K 대통령은 왕국의 왕이다. 그는 수도로 삼을 도시 하나를 고른다. 안전상의 이유로 수도는 다음 조건을 만족해야 한다.

수도에 속한 어느 마을에서든, 수도에 속한 마을만 거쳐서 수도의 다른 모든 마을로 이동할 수 있어야 한다.

그런데 이 조건을 만족하는 도시가 하나도 없을 수 있고, 그 경우 K 대통령은 수도를 고를 수 없다는 사실을 알아챘다.

이 문제를 해결하려고 K 대통령은 도시를 합친다. 정확히 말하면 다음 연산을 할 수 있다.

1≤x≤K1 \le x \le K, 1≤y≤K1 \le y \le K, x≠yx \ne y를 만족하는 x와 y를 고른다. 그러면 도시 y에 속한 모든 마을이 도시 x에 속하게 된다.

도시를 합치는 데는 비용이 많이 드므로, K 대통령은 수도를 고를 수 있을 때까지 필요한 합치기 횟수를 최소로 하고자 한다.

마을과 도로의 구조, 그리고 각 마을이 현재 속한 도시가 주어질 때, 도시 합치기의 최소 횟수를 구하는 프로그램을 작성하라.

입력

표준 입력에서 다음 데이터를 읽는다. 입력의 모든 값은 정수이다.

N K
A1 B1
.
.
.
AN-1 BN-1
C1
.
.
.
CN

출력

표준 출력에 한 줄을 출력한다. 수도를 고르는 데 필요한 도시 합치기의 최소 횟수를 출력한다.

제한

  • 1≤N≤2000001 \le N \le 200000.
  • 1≤K≤N1 \le K \le N.
  • 1≤Ai≤N1 \le A_i \le N(1≤i≤N−11 \le i \le N - 1).
  • 1≤Bi≤N1 \le B_i \le N(1≤i≤N−11 \le i \le N - 1).
  • 어느 마을에서든 도로를 거쳐 다른 모든 마을로 이동할 수 있다.
  • 1≤Cj≤K1 \le C_j \le K(1≤j≤N1 \le j \le N).
  • 모든 kk(1≤k≤K1 \le k \le K)에 대해 Cj=kC_j = k인 정수 jj(1≤j≤N1 \le j \le N)가 존재한다.

예제3

  1. 예제 1

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

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

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