헛간에서 달아난 소
시간 제한1초메모리 제한128 MB
1번을 뿌리로 하는 가중치 트리에서 각 노드마다 자기 자신을 포함해 아래쪽으로 거리의 합이 L 이하인 후손의 수를 구한다.
문제
목장에서 젖을 짤 시간이 되었지만, 소들이 모두 달아나 버렸습니다! 소들을 다시 모으려면 각 소가 얼마나 멀리 갈 수 있었는지 미리 파악해 두어야 합니다.
목장에는 번부터 번까지 번호가 매겨진 개의 목초지가 있고 (), 이 목초지들은 개의 양방향 길로 연결되어 있습니다. 헛간은 번 목초지에 있으며 헛간에서 모든 목초지로 갈 수 있으므로, 목초지들은 헛간을 뿌리로 하는 트리를 이룹니다.
각 소는 아침에 자기 목초지에서 출발합니다. 소는 헛간에서 멀어지는 방향으로만 이동하며(헛간 쪽으로는 절대 되돌아가지 않습니다), 게을러서 이동한 거리의 합이 을 넘지 않습니다. 각 목초지에 대해, 그곳에서 출발한 소가 도달할 수 있는 서로 다른 목초지가 몇 개인지(출발한 목초지 자신을 포함하여) 구하세요.
거리 값이 매우 커질 수 있으므로 64비트 정수로 저장해야 합니다.
입력
- 첫째 줄: 두 정수 과 (, ).
- 둘째 줄부터 째 줄까지: 번째 줄에는 두 정수 와 가 주어집니다. ()는 번 목초지에서 헛간으로 가는 최단 경로에서 바로 다음 목초지, 즉 번 목초지의 부모 목초지이고, ()는 번 목초지와 번 목초지를 잇는 길의 길이입니다.
출력
- 째 줄부터 째 줄까지: 한 줄에 정수 하나씩 출력합니다. 번째 줄의 수는, 헛간(번 목초지)에서 반드시 더 멀어지는 방향으로만 길을 따라가며 이동한 총 거리가 이하가 되도록 할 때 번 목초지에서 도달할 수 있는 목초지의 개수입니다.
힌트
예제에서 번 목초지의 소는 , , 번 목초지에 숨을 수 있습니다. 번 목초지의 소는 , 번 목초지에 숨을 수 있습니다. 번과 번 목초지는 헛간에서 가장 멀리 떨어져 있어, 그곳의 소는 제자리에 머무를 수밖에 없습니다.