만드는 중입니다

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

트리를 건강하게 만들기

면접 대비

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

요약
트리에서 값이 1인 불건강 노드를 세고, 각 연결 요소에 불건강 노드가 K개 이하로 남도록 간선을 최소로 끊는 개수를 구합니다.
난이도

보통10점 중 6점

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

문제

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

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

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

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

입력

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

두 번째 줄에 NN개의 정수 H1,H2,⋯ ,HNH_1, H_2, \cdots, H_N이 공백으로 구분되어 주어진다. 각 1≤i≤N1\leq i\leq N에 대하여, ii번째 노드가 안 건강 노드이면 Hi=1H_i=1이고, 그렇지 않으면 Hi=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에 대하여, Hi∈{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