만드는 중입니다

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

합병

시간 제한3초메모리 제한256 MB

요약
도시 N개로 이루어진 트리와 도시마다 배정된 주(state)가 주어질 때, 어떤 두 연결 그룹으로도 나눌 수 없게 만드는 최소 병합 횟수를 구합니다.
난이도

어려움10점 중 8점

유형
트리, DFS, 유니온 파인드
정답자
아직 제출이 없습니다

문제

JOI합중국에는 NN개의 도시가 있고, 1번부터 NN번까지 번호가 붙어 있다. 국도는 N−1N-1개 있으며, ii번째(1≤i≤N−11 \le i \le N-1) 국도는 AiA_i번 도시와 BiB_i번 도시를 양방향으로 잇는다. 두 도시 사이에는 국도를 몇 개 거쳐 오갈 수 있다.

현재 JOI합중국은 1번부터 KK번까지 번호가 붙은 KK개의 주로 나뉘어 있다. jj번(1≤j≤N1 \le j \le N) 도시는 SjS_j번 주에 속한다. 모든 주에는 도시가 적어도 하나씩 속해 있다.

K이사장은 나라가 분열할지 걱정하고 있다. 모든 도시를 두 그룹 XX, YY로 나누어 다음 조건을 모두 만족할 수 있으면, JOI합중국은 분열가능한 상태라고 한다.

  • 모든 도시는 그룹 XX 또는 그룹 YY에 속한다.
  • 그룹 XX에 속한 도시가 적어도 하나 있고, 그룹 YY에 속한 도시도 적어도 하나 있다.
  • 같은 주의 도시는 모두 같은 그룹에 속한다.
  • 그룹 XX의 임의의 두 도시는 그룹 XX의 도시만 거쳐서 오갈 수 있다.
  • 그룹 YY의 임의의 두 도시는 그룹 YY의 도시만 거쳐서 오갈 수 있다.

K이사장은 JOI합중국을 분열가능하지 않은 상태로 만들려고 주를 합병한다. 한 번의 합병은 두 주를 골라 하나로 합치는 것이다. 새 주에는 기존 두 주의 도시가 모두 속한다. 합병 횟수를 최소로 하여 JOI합중국을 분열가능하지 않은 상태로 만드는 최소 횟수를 구하라.

입력

첫째 줄에 NN과 KK가 주어진다.

이어지는 N−1N-1개의 줄에는 각각 AiA_i와 BiB_i가 주어진다.

이어지는 NN개의 줄에는 각각 SjS_j가 주어진다.

N K
A_1 B_1
⋮
A_{N-1} B_{N-1}
S_1
⋮
S_N

출력

JOI합중국을 분열가능하지 않은 상태로 만드는 합병의 최소 횟수를 첫째 줄에 출력한다.

제한

  • 1≤N≤5000001 \le N \le 500000.
  • 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≤Sj≤K1 \le S_j \le K(1≤j≤N1 \le j \le N).
  • 모든 kk(1≤k≤K1 \le k \le K)에 대해 Sj=kS_j = k를 만족하는 jj(1≤j≤N1 \le j \le N)가 존재한다.
  • 시간 제한: 3000 ms. 메모리 제한: 256 MB.

예제3

  1. 예제 1

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

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

    입력
    2 2
    1 2
    1
    2
    
    예상 출력
    1