개발자 크루

[RecurDyn]

취미로 코딩하는 RecurDyn 개발자 모임

Lv.4

썸네일

나무 막대

난이도
4 단계
참가자
0
제출
0
정답률
0.00 %
언어별 시간/메모리
언어별 시간/메모리 표
언어 시간 메모리
C++ 2초 1024MB
JavaScript 1초 1024MB
C 2초 1024MB
Java 4초 1024MB
Python 1초 1024MB

호석이는 정원이 있는 고급 저택을 샀습니다. 식목일을 맞아서 정원에 나무 한 그루를 심었는데, 이 나무는 N개의 정점으로 이루어져 있습니다. 나무의 정점들은 1번부터 N번 정점으로 이뤄져 있으며, 1번 정점이 뿌리에 가까운 정점입니다. 나무에는 N−1개의 가지가 있는데, 각 가지에는 수가 한 개씩 쓰여 있습니다. 또한, 가지가 A번 정점과 B번 정점을 이어준다면, 둘 중 작은 번호가 1번 정점에 더 가까이 있음이 보장됩니다. 주어진 가지들로 항상 모든 정점이 연결됨을 가정해도 좋습니다.



호석이는 여기서 "나무 막대" 하나를 선택하려고 합니다. 나무 막대란, 연속된 가지들이 한 정점에서 시작하여 더 작은 번호 쪽으로 이동하는 형태를 띄는 것을 의미합니다. 예를 들어, 아래 그림과 같은 나무를 심었다면, 빨간색 모양처럼 8→7→6→5 정점들을 지나는 가지들이나 4→2→1 가지들을 선택하는 것이 올바른 "나무 막대" 중 하나입니다. 이때 나무 막대는 정의상 꼭 2개 이상의 정점으로 이루어져 있어야 함에 유의합니다.





"최고의 나무 막대" 란, 나무 막대 포함된 가지들에 써 있는 수들의 종류가 L가지 이상, R가지 이하인 경우를 의미합니다. 예를 들어 위의 그림에서 8→7→6→5 번 정점을 이용하여 나무 막대를 만든다면, 가지에는 8, 3, 8이라는 수가 써 있으므로 총 2가지의 수가 포함되어 있습니다. 4→2→1번 정점을 이용하였다면, 수는 5만 등장했기에 총 1가지 수가 포함되어 있습니다.



호석이는 심은 나무에서 최고의 나무 막대가 몇 가지나 있을지를 찾고 싶습니다. 나무의 정보와 L, R이 주어졌을 때, 나무에서 최고의 나무 막대가 몇 가지나 존재하는지를 찾아주는 프로그램을 작성해주세요.



본 문제의 저작권은 (주)브랜치앤바운드에 있으며, 저작자의 동의 없이 무단 전재/복제/배포를 금지합니다.

제약조건

  • 1 ≤ L ≤ R ≤ N ≤ 50,000
  • 1 ≤ u ≤ v ≤ N
  • 1 ≤ num ≤ 109

입력형식

첫 번째 줄에는 나무의 정점 개수 N, 그리고 최고의 나무 막대 조건인 L과 R이 공백으로 구분되어 주어집니다.

이어서 N−1개의 줄에 걸쳐서 각 가지의 정보가 주어집니다. 각 줄에는 u, v, num이 공백으로 구분되어 주어집니다.

이는 곧 u번 정점과 v번 정점 사이에 num이 써있는 가지가 있다는 의미입니다.

출력형식

첫 번째 줄에 최고의 나무 막대로 가능한 경우의 수를 출력해주세요.

입력예제1

5 2 3 1 2 1 2 3 2 3 4 3 4 5 4

출력예제1

5

입력예제2

5 2 2 1 2 9 1 3 5 1 4 4 1 5 8

출력예제2

0

입력예제3

10 2 3 1 2 5 2 3 1 2 4 5 1 5 5 5 6 8 5 9 5 5 10 7 6 7 3 7 8 8

출력예제3

8