만드는 중입니다

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

주유소

시간 제한3.5초메모리 제한2048 MB

요약
도시 N개가 나무 모양으로 연결되고 연료 용량이 K일 때, 모든 도시 쌍을 오가는 N^2대의 차가 각 주유소에서 멈추는 횟수를 구합니다.
난이도

어려움10점 중 8점

유형
트리, 분할 정복, 정렬
정답자
아직 제출이 없습니다

문제

체코의 고속도로망은 NN개의 도시와 N−1N-1개의 도로로 이루어져 있다. 각 도로의 길이는 킬로미터 단위로 주어진다. 두 도시를 잇는 경로는 항상 하나뿐이다. 도시마다 주유소가 하나씩 있고, 다른 곳에는 주유소가 없다.

어느 날 여러 사람이 자동차 여행을 떠났다. 자동차는 모두 N2N^2대였다. 모든 순서쌍 (a,b)(a,b)마다 도시 aa에서 도시 bb로 가는 자동차가 정확히 한 대씩 출발했고, 각 자동차는 두 도시 사이의 유일한 경로를 따라 달렸다. 모든 자동차의 연료 탱크 용량은 KK리터로 같다. 자동차는 1킬로미터를 달릴 때마다 연료를 1리터씩 소비한다. 출발 전 모든 탱크는 가득 차 있다.

체코 사람들은 게으르고 행동이 예측 가능하다. 다음 도시까지 갈 연료가 부족할 때만 주유한다. 빈 탱크로 도시에 도착하는 것은 가능하다. 주유소에 멈추게 되면 탱크를 가득 채운다.

세무 당국은 하루 동안 각 주유소에 멈춘 자동차가 몇 대인지 알고 싶어 한다. 이 예측 가능한 행동을 바탕으로 하면 그 수를 쉽게 계산할 수 있다.

입력

첫 줄에 도시 수 NN과 자동차의 연료 탱크 용량 KK가 공백으로 구분된 두 정수로 주어진다. 다음 N−1N-1개의 줄에는 도로 정보가 주어진다. 각 줄에는 공백으로 구분된 세 정수 uiu_i, viv_i, lil_i가 있으며, uiu_i와 viv_i는 도로가 잇는 두 도시의 번호이고 lil_i는 도로의 길이(킬로미터)이다. 도시는 00부터 N−1N-1까지 번호가 매겨져 있다. 임의의 두 도시 사이에 경로가 정확히 하나 존재함이 보장된다.

출력

NN개의 줄을 출력한다. ii번째 줄(도시 00부터 시작)에는 도시 ii의 주유소에서 멈춘 자동차 수를 출력한다.

제한

  • 2≤N≤700002 \leq N \leq 70000
  • 1≤K≤1091 \leq K \leq 10^9
  • 0≤li≤K0 \leq l_i \leq K (각 ii에 대해 0≤i≤N−20 \leq i \leq N-2)

예제2

  1. 예제 1

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

    입력
    6 2
    0 1 1
    1 2 1
    2 3 1
    3 4 2
    4 5 1
    
    예상 출력
    0
    3
    3
    12
    8
    0