D. Сбалансированное дерево
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дано дерево$$$^{\text{∗}}$$$ с $$$n$$$ вершинами и значениями $$$l_i, r_i$$$ для каждой вершины. Вы можете выбрать начальные значения $$$a_i$$$, удовлетворяющие условию $$$l_i\le a_i\le r_i$$$ для $$$i$$$-й вершины. Дерево считается сбалансированным, если все значения в вершинах равны, а значение сбалансированного дерева определяется как значение любой вершины.

За одну операцию вы можете выбрать две вершины $$$u$$$ и $$$v$$$ и увеличить значения всех вершин в поддереве$$$^{\text{†}}$$$ вершины $$$v$$$ на $$$1$$$, рассматривая $$$u$$$ как корень всего дерева. Обратите внимание, что $$$u$$$ может быть равен $$$v$$$.

Ваша цель — выполнить последовательность операций так, чтобы дерево стало сбалансированным. Найдите минимально возможное значение дерева после выполнения этих операций. Обратите внимание, что вам не нужно минимизировать количество операций.

$$$^{\text{∗}}$$$Деревом называется связный граф без циклов.

$$$^{\text{†}}$$$Вершина $$$w$$$ принадлежит поддереву вершины $$$v$$$, если любой путь от корня $$$u$$$ до $$$w$$$ проходит через $$$v$$$.

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

Первая строка входных данных содержит одно целое число $$$t$$$ ($$$1 \leq t \leq 10^5$$$) — количество входных наборов данных.

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

Затем следуют $$$n$$$ строк. $$$i$$$-я строка содержит два целых числа $$$l_i,r_i$$$ ($$$0\le l_i \le r_i\le 10^9$$$) — ограничения на значение $$$i$$$-й вершины.

Следующие $$$n-1$$$ строк содержат ребра дерева. $$$i$$$-я строка содержит два целых числа $$$u_i,v_i$$$ ($$$1\le u_i,v_i \le n$$$, $$$u_i \neq v_i$$$) — ребро, соединяющее $$$u_i$$$ и $$$v_i$$$. Гарантируется, что заданные ребра образуют дерево.

Гарантируется, что сумма $$$n$$$ по всем наборам данных не превосходит $$$2\cdot 10^5$$$.

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

Для каждого набора данных выведите одно целое число — минимально возможное значение, к которому могут быть приведены все $$$a_i$$$ после выполнения операций. Можно доказать, что ответ всегда существует.

Пример
Входные данные
6
4
0 11
6 6
0 0
5 5
2 1
3 1
4 3
7
1 1
0 5
0 5
2 2
2 2
2 2
2 2
1 2
1 3
2 4
2 5
3 6
3 7
4
1 1
1 1
1 1
0 0
1 4
2 4
3 4
7
0 20
0 20
0 20
0 20
3 3
4 4
5 5
1 2
1 3
1 4
2 5
3 6
4 7
5
1000000000 1000000000
0 0
1000000000 1000000000
0 0
1000000000 1000000000
3 2
2 1
1 4
4 5
6
21 88
57 81
98 99
61 76
15 50
23 67
2 1
3 2
4 3
5 3
6 4
Выходные данные
11
3
3
5
3000000000
98
Примечание

В первом наборе данных вы можете выбрать $$$a=[6,6,0,5]$$$.

Вы можете выполнить следующие операции, чтобы сделать все $$$a_i$$$ равными:

  1. Выберите $$$u=4$$$, $$$v=3$$$ и выполните операцию $$$5$$$ раз.
  2. Выберите $$$u=1$$$, $$$v=3$$$ и выполните операцию $$$6$$$ раз.

Полный процесс показан ниже (числа в скобках — значения $$$a$$$):

Можно доказать, что это оптимальное решение.