가중치 트리에서 두 영상 사이의 USADO는 경로 위 간선 가중치의 최솟값이다. 각 질의 (K, v)마다 v와의 USADO가 K 이상인 정점의 수를 구한다.
보통7그래프유니온 파인드정렬DFS아직 제출이 없습니다시간 제한2초메모리 제한512 MB농부 존은 남는 시간에 동영상 공유 서비스 MooTube를 만들었다. MooTube에서 존의 소들은 재미있는 동영상을 서로 나눠 본다. 소들이 이미 올려 둔 동영상은 N개이고, 1번부터 N번까지 번호가 붙어 있다. 하지만 존은 소가 마음에 들 만한 새 동영상을 어떻게 찾게 해 줄지 아직 좋은 방법을 떠올리지 못했다.
존은 동영상마다 연관 동영상 목록을 만들기로 했다. 그러면 소는 지금 보고 있는 동영상과 가까운 동영상을 추천받는다.
두 동영상이 얼마나 가까운지는 존이 만든 USADO라는 값으로 잰다. 존은 동영상 쌍 N−1개를 골라 그 쌍의 USADO를 직접 계산했다. 이 N−1개의 쌍은 어떤 동영상에서 다른 어떤 동영상으로 가는 경로가 정확히 하나만 존재하도록 골랐다. 동영상을 정점으로 보고 직접 잰 쌍을 간선으로 보면 전체가 하나의 트리다. 직접 재지 않은 두 동영상의 USADO는 둘을 잇는 경로에 놓인 간선의 USADO 중 최솟값이다.
존은 동영상 하나를 정하고 값 K를 정한 다음, 그 동영상과의 USADO가 K 이상인 동영상을 모두 추천한다. 추천이 너무 많으면 소가 일을 못 하니 K를 잘 골라야 한다. K와 동영상 번호가 주어질 때 추천되는 동영상이 몇 개인지 답하라.
첫 줄에 동영상의 수 N과 질문의 수 Q가 주어진다. (1≤N≤100000, 1≤Q≤100000)
다음 N−1개의 줄에는 존이 직접 잰 값이 한 줄에 하나씩 주어진다. 각 줄은 세 정수 pi, qi, ri로 이루어지며 (1≤pi,qi≤N, 1≤ri≤1000000000), 동영상 pi와 qi가 USADO ri로 이어져 있다는 뜻이다.
다음 Q개의 줄에는 질문이 한 줄에 하나씩 주어진다. 각 줄은 두 정수 ki와 vi로 이루어지며 (1≤ki≤1000000000, 1≤vi≤N), K=ki일 때 동영상 vi를 보고 있는 소에게 추천되는 동영상이 몇 개인지 묻는다.
Q개의 줄을 출력한다. i번째 줄에는 i번째 질문의 답을 출력한다.
예제에서 1번과 2번의 USADO는 3, 2번과 3번의 USADO는 2, 2번과 4번의 USADO는 4다. 여기서 1번과 3번의 USADO는 min(3,2)=2, 1번과 4번의 USADO는 min(3,4)=3, 3번과 4번의 USADO는 min(2,4)=2가 된다.
K=1이고 2번 동영상을 볼 때 추천되는 동영상은 1번, 3번, 4번이다. K=4이고 1번 동영상을 볼 때는 추천되는 동영상이 없다. K=3이고 1번 동영상을 볼 때는 2번과 4번이 추천된다.