Олимпиадный тренинг

Задача . G. Запросы на пути


Вам задано взвешенное дерево, состоящее из \(n\) вершин. Напомним, что деревом называется связный граф без циклов. Вершины \(u_i\) и \(v_i\) соединены ребром веса \(w_i\).

Вам задано \(m\) запросов. \(i\)-й запрос задан целым числом \(q_i\). В этом запросе вам необходимо посчитать количество пар вершин \((u, v)\) (\(u < v\)) таких, что максимальный вес ребра на простом пути между \(u\) и \(v\) не превосходит \(q_i\).

Входные данные

Первая строка входных данных содержит два целых числа \(n\) и \(m\) (\(1 \le n, m \le 2 \cdot 10^5\)) — количество вершин в дереве и количество запросов.

Каждая из следующих \(n - 1\) строк описывает ребра дерева. Ребро \(i\) обозначается тремя целыми числами \(u_i\), \(v_i\) и \(w_i\) — номерами вершин, которые оно соединяет (\(1 \le u_i, v_i \le n\), \(u_i \ne v_i\)) и весом ребра (\(1 \le w_i \le 2 \cdot 10^5\)). Гарантируется, что заданный набор ребер образует дерево.

Последняя строка входных данных содержит \(m\) целых чисел \(q_1, q_2, \dots, q_m\) (\(1 \le q_i \le 2 \cdot 10^5\)), где \(q_i\) равно максимальному весу ребра в \(i\)-м запросе.

Выходные данные

Выведите \(m\) целых чисел — ответы на запросы. \(i\)-е число должно равняться количеству пар вершин \((u, v)\) (\(u < v\)) таких, что максимальный вес ребра на простом пути между \(u\) и \(v\) не превосходит \(q_i\).

Запросы пронумерованы от \(1\) до \(m\) в порядке входных данных.

Примечание

Картинка, соответствующая дереву из первого тестового примера:


Примеры
Входные данныеВыходные данные
1 7 5
1 2 1
3 2 3
2 4 1
4 5 2
5 7 4
3 6 2
5 2 3 4 1
21 7 15 21 3
2 1 2
1 2
0 0
3 3 3
1 2 1
2 3 2
1 3 2
1 3 3

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя