팩트는 트리가 건강해지고 있다는 거임

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

요약
일부 노드가 안 건강한 트리에서, 남은 모든 연결 요소의 안 건강 노드가 K개 이하가 되도록 없앨 간선의 최소 개수를 구한다.
난이도

보통10점 중 5점

유형
트리, DFS, 그리디, 동적 계획법
정답자
아직 제출이 없습니다

문제

트리를 가지고 노는 것을 좋아하는 예환이는 나뭇가지로 하나의 트리를 만들었다. 하지만 시간이 지나자 나뭇가지들의 접합부 중 몇몇이 썩고 있다는 것을 발견했다. 예환이는 곧바로 장미칼을 가져와서 최소 개수의 나뭇가지들을 잘라내어 모든 연결 요소들이 건강해지게 만들고 싶다.

나뭇가지들이 만나는 접합부를 노드라고 할 때, 노드들을 간선(나뭇가지)으로 연결한 그래프 GG를 생각하자. 그래프 GG는 트리(수형도)이다. 썩고 있는 노드를 안 건강 노드라고 하자. 예환이는 하나의 연결 요소 속 안 건강 노드의 개수가 KK를 넘지 않으면 그 연결 요소를 건강하다고 판단한다.

위의 그림은 K=2K=2일 때 트리를 건강하게 나눈 예시 중 하나이다. (빨간 노드가 안 건강 노드를 의미한다.)

총 노드의 수 NN, 한 연결 요소 속 안 건강 노드의 최대 개수 KK가 주어졌을 때, 최소 몇 개의 간선을 없앴을 때 남은 모든 연결 요소들이 건강해지는지 출력하는 프로그램을 작성하시오.

입력

첫 번째 줄에 두 정수 NN, KK가 공백으로 구분되어 주어진다.

두 번째 줄에 NN개의 정수 H_1,H_2,⋯ ,H_NH\_1, H\_2, \cdots, H\_N가 공백으로 구분되어 주어진다. 각 1≤i≤N1\leq i\leq N에 대하여, ii번째 노드가 안 건강 노드이면 H_i=1H\_i=1이고 그렇지 않으면 H_i=0H\_i=0이다.

이후 N−1N - 1개의 줄에 걸쳐 각 줄마다 두 정수 UU, VV가 공백으로 구분되어 주어진다. 이는 UU번째 노드와 VV번째 노드 사이를 잇는 간선이 존재한다는 의미이다.

출력

최소 몇 개의 간선을 없앴을 때 남은 모든 연결 요소들이 건강해지는지 출력한다.

제한

  • 1≤N≤1051\leq N\leq 10^5, 1≤K≤N1\leq K\leq N
  • 각 1≤i≤N1\leq i\leq N에 대하여, H_i∈0,1 H\_i\in\\{0, 1\\}
  • 1≤U≤N1\leq U\leq N, 1≤V≤N1\leq V\leq N, U≠VU\neq V
  • 주어지는 모든 수는 정수이다.
  • 주어지는 그래프는 트리이다.

예제1

  1. 예제 1

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