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

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

헛간에서 달아난 소

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

요약
1번을 뿌리로 하는 가중치 트리에서 각 노드마다 자기 자신을 포함해 아래쪽으로 거리의 합이 L 이하인 후손의 수를 구한다.
난이도

보통10점 중 7점

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

문제

목장에서 젖을 짤 시간이 되었지만, 소들이 모두 달아나 버렸습니다! 소들을 다시 모으려면 각 소가 얼마나 멀리 갈 수 있었는지 미리 파악해 두어야 합니다.

목장에는 11번부터 NN번까지 번호가 매겨진 NN개의 목초지가 있고 (1≤N≤200,0001 \le N \le 200{,}000), 이 목초지들은 N−1N - 1개의 양방향 길로 연결되어 있습니다. 헛간은 11번 목초지에 있으며 헛간에서 모든 목초지로 갈 수 있으므로, 목초지들은 헛간을 뿌리로 하는 트리를 이룹니다.

각 소는 아침에 자기 목초지에서 출발합니다. 소는 헛간에서 멀어지는 방향으로만 이동하며(헛간 쪽으로는 절대 되돌아가지 않습니다), 게을러서 이동한 거리의 합이 LL을 넘지 않습니다. 각 목초지에 대해, 그곳에서 출발한 소가 도달할 수 있는 서로 다른 목초지가 몇 개인지(출발한 목초지 자신을 포함하여) 구하세요.

거리 값이 매우 커질 수 있으므로 64비트 정수로 저장해야 합니다.

입력

  • 첫째 줄: 두 정수 NN과 LL (1≤N≤200,0001 \le N \le 200{,}000, 1≤L≤10181 \le L \le 10^{18}).
  • 둘째 줄부터 NN째 줄까지: ii번째 줄에는 두 정수 pip_i와 lil_i가 주어집니다. pip_i (1≤pi<i1 \le p_i < i)는 ii번 목초지에서 헛간으로 가는 최단 경로에서 바로 다음 목초지, 즉 ii번 목초지의 부모 목초지이고, lil_i (1≤li≤10121 \le l_i \le 10^{12})는 ii번 목초지와 pip_i번 목초지를 잇는 길의 길이입니다.

출력

  • 11째 줄부터 NN째 줄까지: 한 줄에 정수 하나씩 출력합니다. ii번째 줄의 수는, 헛간(11번 목초지)에서 반드시 더 멀어지는 방향으로만 길을 따라가며 이동한 총 거리가 LL 이하가 되도록 할 때 ii번 목초지에서 도달할 수 있는 목초지의 개수입니다.

힌트

예제에서 11번 목초지의 소는 11, 22, 44번 목초지에 숨을 수 있습니다. 22번 목초지의 소는 22, 33번 목초지에 숨을 수 있습니다. 33번과 44번 목초지는 헛간에서 가장 멀리 떨어져 있어, 그곳의 소는 제자리에 머무를 수밖에 없습니다.

예제2

  1. 예제 1

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

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