아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

슈퍼 트리 뽀개기

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

요약
한 노드를 골라 가중치 거리 K 이내의 모든 자손 노드를 셀 때, 가능한 최댓값을 구한다.
난이도

보통10점 중 7점

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

문제

트리 문제만 공부하다 정신이 돌아버린 형진이는, 트리를 뽀개기로 결정하였다.

여기 NN개의 정점으로 이루어진, 간선에 가중치가 있는 트리가 있다. 이 트리는 항상 1번 노드가 트리의 루트가 된다.

형진이는 슈퍼 트리 뽀개기를 1회 사용하여 이 트리를 뽀갤 수 있다. 트리의 특정 노드를 하나 선택한 후, 그 노드부터 거리가 KK 이하에 있는 손자 노드 모두를 뽀개버린다.

노드 사이의 거리는 다음과 같이 정의된다.

  • 노드 uu와 vv 사이의 거리는, 노드 uu에서 노드 vv까지의 단순 경로에 포함되는 간선의 가중치의 총합이다.

손자 노드는 다음과 같이 정의된다.

  • 루트까지의 단순 경로에 vv가 포함되는 모든 노드는 노드 vv의 손자 노드이다.

다음은 KK = 2일 때 트리를 뽀개는 예시이다. 왼쪽의 경우 1번 노드를 선택해 슈퍼 트리 뽀개기를 진행했고, 오른쪽의 경우 3번 노드를 선택해 슈퍼 트리 뽀개기를 진행했다. 각각 4, 5개의 노드가 뽀개졌다.

형진이는 최대한 많은 노드를 뽀개고 싶다. 형진이를 도와 최대한 많은 노드를 뽀갰을 때 몇 개의 노드를 뽀갤 수 있는지 구해보자.

입력

입력은 다음과 같이 주어진다.

NN KK

a_1a\_1 b_1b\_1 c_1c\_1

a_2a\_2 b_2b\_2 c_2c\_2

⋯\cdots

a_N−1a\_{N-1} b_N−1b\_{N-1} c_N−1c\_{N-1}

첫째 줄에 트리 노드의 개수 NN, 뽀갤 수 있는 손자 노드의 거리 KK가 공백을 사이에 두고 주어진다.

두 번째 줄부터 N−1N - 1개의 줄에 걸쳐 간선에 연결된 두 노드의 번호 a_ia\_i, b_ib\_i, 그리고 해당 간선의 가중치 c_ic\_i가 공백을 사이에 두고 주어진다.

출력

슈퍼 트리 뽀개기를 통해 최대한 많은 노드를 뽀갤 때 몇 개의 노드를 뽀갤 수 있는지 출력한다.

제한

  • 1≤N≤100,0001 \leq N \leq 100\\,000
  • 1≤K≤10181 \leq K \leq 10^{18}
  • 1≤a_i,b_i≤N1 \leq a\_i, b\_i \leq N
  • 1≤c_i≤1091 \leq c\_i \leq 10^9

예제2

  1. 예제 1

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

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