Динамическое программирование, СПбГУ 2024, тренировка 2
A. Новые приключения Волка с Уолл-Стрит
ограничение по времени на тест
6 секунд
ограничение по памяти на тест
256 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Джордан Белфорт вышел из тюрьмы и решил вновь завоевать Уолл-Стрит! UAM — главная организация по добыче древних артефактов — также с нетерпением ждала его возвращения, и потому в тот же день связалась с ним — перед главным умом в мире денег появилась вот такая задача:

По всему миру распространились нумизматы, падкие до редких монет из мира инков. За всё время у UAM накопилось приличное количество этих монет, и теперь UAM хочет отправить каждому своему клиенту эти монеты.

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

Для начала Джордан определился, как будут перевозиться деньги: древние монеты будут класться в отдельные квадратные контейнеры, которые будут затем аккуратно разложены в пластиковые пакеты вместе с пачками долларовых купюр. Далее пакеты будут вакуумировать, сворачивать в рулоны и так перевозить.

Чтобы не вызвать подозрения на таможне, нужно, чтобы между доставщиками не было никакой корреляции. С одеждой, внешностью, голосом, Белфорт прекрасно знает, как справиться — он не раз такое проворачивал. Но вот чтобы деньги по-разному лежали в пакетах... тут наш отчаянный магнат призадумался.

Ему интересно, как много пакетов он может снарядить так, чтобы в каждых двух деньги были разложены по-разному. Он нанял вас, опытных программистов, для написания программы, которая поможет ему выяснить это.

У Белфорта есть бесконечное количество пластиковых пакетов одинакового размера. Их размеры — это $$$N$$$ united-метров в высоту и $$$m$$$ united-метров в ширину. А также у него есть бесконечное количество контейнеров размером $$$1 \times 1$$$ united-метров квадратных.

У UAM есть бесконечное количество долларов, а также UAM хочет, чтобы каждому клиенту было доставлено ровно $$$K$$$ монет. Пачка долларов на момент выхода Белфорта из тюрьмы имеют размер $$$1 \times 2$$$ united-метров квадратных.

Требуется узнать, сколько есть различных способов разложить деньги вплотную в пакете так, чтобы среди них было ровно $$$K$$$ контейнеров с монетами. Раскладывать пачки купюр можно только горизонтально или вертикально. Белфорт утверждает, что пакеты с пустотами невозможно безопасно (для денег, несомненно) вакуумировать, пакет должен быть набит битком, поэтому не допускаются способы, в которых есть пустоты, не занятые деньгами!

Так как людей, которые могут быть пособниками Белфорта, на Земле ограниченное число, требуется посчитать ответ по модулю $$$2^{32}$$$.

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

В единственной строке через пробел указаны три целых числа $$$N$$$, $$$m$$$ и $$$K$$$ ($$$1 \leq N \leq 10^5$$$, $$$1 \leq m \leq 4$$$, $$$0 \leq K \leq 100$$$).

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

Вам необходимо вывести количество различных способов разложить вплотную контейнеры с монетами размера $$$1 \times 1$$$ и пачки долларов размера $$$1 \times 2$$$ вертикально или горизонтально в пакете размером $$$N \times m$$$ так, чтобы контейнеров с монетами было ровно $$$K$$$ штук.

Способы считаются разными, если существует клетка размерами $$$1 \times 1$$$, которая в одном пакете заполнена пачкой, лежащей горизонтально, а в другом вертикально — или в одном пакете эта ячейка содержит контейнер с монетой, а в другом заполнена банкнотами.

Так как ответ может быть достаточно большим, требуется посчитать его по модулю $$$2^{32}$$$.

Пример
Входные данные
2 3 2
Выходные данные
11
Примечание

Давайте для начала выпишем все возможные способы расположения контейнеров:

$$$$$$ \left\lvert \begin{matrix} \hline x & x & . \\ . & . & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline x & . & x \\ . & . & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline x & . & . \\ x & . & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline x & . & . \\ . & x & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline x & . & . \\ . & . & x \\ \hline \end{matrix} \right\rvert $$$$$$

$$$$$$ \left\lvert \begin{matrix} \hline . & x & x \\ . & . & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline . & x & . \\ x & . & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline . & x & . \\ . & x & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline . & x & . \\ . & . & x \\ \hline \end{matrix} \right\rvert $$$$$$

$$$$$$ \left\lvert \begin{matrix} \hline . & . & x \\ x & . & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline . & . & x \\ . & x & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline . & . & x \\ . & . & x \\ \hline \end{matrix} \right\rvert $$$$$$

$$$$$$ \left\lvert \begin{matrix} \hline . & . & . \\ x & x & . \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline . & . & . \\ x & . & x \\ \hline \end{matrix} \right\rvert $$$$$$

$$$$$$ \left\lvert \begin{matrix} \hline . & . & . \\ . & x & x \\ \hline \end{matrix} \right\rvert $$$$$$

Теперь попытаемся в каждом способе расположить доллары, и в итоге получаем следующие способы:

$$$$$$ \left\lvert \begin{matrix} \hline x & x & v \\ h & h & v \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline x & v & v \\ x & v & v \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline x & h & h \\ x & h & h \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline x & h & h \\ h & h & x \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline v & x & x \\ v & h & h \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline v & x & v \\ v & x & v \\ \hline \end{matrix} \right\rvert $$$$$$

$$$$$$ \left\lvert \begin{matrix} \hline h & h & x \\ x & h & h \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline v & v & x \\ v & v & x \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline h & h & x \\ h & h & x \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline h & h & v \\ x & x & v \\ \hline \end{matrix} \right\rvert \; \left\lvert \begin{matrix} \hline v & h & h \\ v & x & x \\ \hline \end{matrix} \right\rvert $$$$$$

B. Выбор вершины для удаления
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
128 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Дано неориентированное дерево из $$$n$$$ вершин. Каждой его вершине $$$v$$$ соответствует некоторое значение $$$a_v$$$. Определим стоимость любого его поддерева $$$T$$$ следующим образом: $$$$$$\displaystyle \mathrm{cost}(T) = \mathrm{size}(T) \cdot \sum_{v \in T} a_v\text{,}$$$$$$ где $$$\mathrm{size}(T)$$$ — размер поддерева $$$T$$$.

Из исходного дерева удаляется вершина $$$u$$$ вместе со всеми инцидентными ей рёбрами, в результате чего граф превращается в несколько деревьев.

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

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

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

Вторая строка входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$-2 \cdot 10^5 \le a_i \le 2 \cdot 10^5$$$), где $$$a_i$$$ соответствует значению для вершины $$$i$$$.

Третья строка входных данных содержит $$$n - 1$$$ целое число $$$p_2, p_3, \ldots, p_n$$$ ($$$1 \le p_i \lt i$$$). Они означают, что в дереве есть ребро между $$$2$$$ и $$$p_2$$$, ребро между $$$3$$$ и $$$p_3$$$, ..., ребро между $$$n$$$ и $$$p_n$$$.

Гарантируется, что заданные рёбра образуют дерево.

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

Выведите одно целое число: максимально возможную суммарную стоимость получившихся деревьев, если вы можете выбрать любую вершину в качестве вершины $$$u$$$.

Примеры
Входные данные
2
1 2
1
Выходные данные
2
Входные данные
3
-1 -1 2
1 1
Выходные данные
2
Входные данные
4
1 -1 -1 -1
1 1 1
Выходные данные
-3
Входные данные
4
1 -1 -1 -1
1 2 3
Выходные данные
-1
C. Космическая экспедиция
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Космический исследователь планирует отправиться в экспедицию к удалённой планете. На его пути в заданном порядке есть несколько космических объектов, каждый из которых обладает своей уникальной ценностью для исследования. При этом каждый объект требует определенного количества энергии (в единицах) и времени (в днях) для его изучения.

Однако у исследователя есть ограничение на количество доступной энергии $$$K$$$ и времени $$$M$$$, чтобы завершить миссию. Необходимо составить оптимальную последовательность посещения объектов, которая максимизирует научную ценность экспедиции, учитывая ограничения на энергию и время.

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

В первой строке через пробел заданы число $$$1 \le N \le 100$$$ — количество космических объектов, а также ограничения по энергии $$$1 \le K \le 100$$$ и времени $$$1 \le M \le 100$$$.

В последующих $$$N$$$ строках для каждого объекта через пробел заданы его научная ценность $$$0 \le V \le 150$$$, количество энергии $$$1 \le F \le 50$$$ и время в днях $$$1 \le T \le 20$$$, необходимые для исследования.

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

В первой строке выведите число — максимальную научную ценность исследования. Во второй строке — последовательность посещения объектов.

Предполагается, что объекты нумеруются последовательно, начиная с единицы. Исследователь может их посещать только в заданном порядке.

Если не получится исследовать ни один объект, выведите 0.

Если возможных решений несколько, выведите любое из них.

Примеры
Входные данные
5 60 10
100 20 3
80 17 2
50 10 4
120 25 4
60 12 2
Выходные данные
280
1 4 5
Входные данные
2 12 10
67 15 9
120 4 15
Выходные данные
0

Входные данные
4 40 30
30 7 10
50 16 12
80 12 20
15 5 7
Выходные данные
110
1 3
D. Жираф путешествует и кушает
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Дано прямоугольное поле размера $$$m \times n$$$. В левой верхней клетке с координатами $$$(1, 1)$$$ — стартовой — стоит жираф. Он хочет попасть в правую нижнюю клетку с координатами $$$(m, n)$$$ — финишную. Каждой клетке поля соответствует целое число — количество деревьев в ней.

Жираф умеет делать ходы двух видов: на $$$k$$$ клеток вниз и $$$1$$$ клетку вправо; или на $$$k$$$ клеток вправо и $$$1$$$ вниз. Жираф хочет пройти по полю из стартовой клетки в финишную, в конце каждого хода поедая листья на деревьях в клетке, в которую он пришёл. В стартовой клетке он ничего не ест. При этом каждый чётный ход жираф чувствует себя голодным, поэтому съедает $$$3t$$$ листьев, а каждый нечётный ход чувствует себя объевшимся, поэтому съедает только $$$t$$$ листьев, где $$$t$$$ — количество деревьев на клетке. Ходы нумеруются с единицы.

Выясните, какое наибольшее количество листьев жираф может съесть в своём путешествии.

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

В первой строке заданы через пробел два целых числа: $$$m$$$ и $$$n$$$ ($$$1 \le m, n \le 100$$$).

Во второй строке задано число целое $$$k$$$ ($$$1 \le k \le \min (m, n)$$$).

В следующих $$$m$$$ строках записано по $$$n$$$ чисел в каждой; $$$j$$$-е число $$$i$$$-й из этих строк соответствует количеству деревьев в клетке $$$(i, j)$$$, это целое число в диапазоне от $$$0$$$ до $$$100$$$, включительно.

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

Выведите одно число — наибольшее количество листьев, которое может съесть жираф по пути из стартовой клетки в финишную. Если таких путей нет, выведите $$$-1$$$.

Примеры
Входные данные
2 2
1
1 1
1 1
Выходные данные
1
Входные данные
3 5
2
1 2 0 3 1
2 4 5 7 8
3 0 7 1 0
Выходные данные
5
Входные данные
3 2
1
1 3
2 4
1 2
Выходные данные
-1
E. Петя и кубики
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
512 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Пете подарили необычные кубики: каждый кубик имеет 26 граней, на которых написаны все 26 маленьких букв английского алфавита — по одной букве на каждой грани. Петя захотел сыграть в игру: изначально он выложил $$$n$$$ кубиков в ряд, составив некоторую строку, теперь он хочет превратить её в свою любимую строку. Для этого Петя делает ходы: за один ход Петя может перевернуть один любой кубик, поменяв соответствующую букву строки на любую другую. Также у Пети есть большой пушистый Кот, который может делать ходы вместо Пети. В зависимости от настроения Кот может помочь Пете и за один ход сразу перевернуть кубики так, чтобы получилась любимая Петина строка, или Кот может сделать наоборот — перевернуть кубики так, чтобы получившаяся строка отличалась от любимой Петиной строки в каждой букве. Ход любого игрока возможен, только если он хоть как-то меняет строку из кубиков. Игроки могут делать ходы в любом порядке.

Так как Пете нужно делать доклад по физкультуре, в игре есть время всего лишь на $$$m$$$ ходов. Пете интересно, сколько различных игр может произойти, если после ровно $$$m$$$ ходов должна получиться его любимая строка. Так как число игр может быть очень большим, Пете интересен лишь остаток от деления этого числа на $$$9! = 362\,880$$$. Помогите Пете найти это значение.

Заметим, что две игры различны, если существует номер хода, который в одной игре делал Петя, а в другой — Кот, или же если существует номер хода, после которого на кубиках были разные строки.

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

В первой строке заданы два целых числа $$$n$$$ и $$$m$$$ ($$$1 \leq n \leq 10\,000$$$ и $$$0 \leq m \leq 10\,000$$$). Во второй строке записана начальная строка, которая получилась из кубиков перед началом игры, а в третьей — любимая строка Пети. Гарантируется, что обе строки имеют длину $$$n$$$ и состоят только из маленьких букв английского алфавита.

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

Выведите одно число — ответ на задачу.

Примеры
Входные данные
4 5
star
wars
Выходные данные
111957
Входные данные
4 1
spbu
spbu
Выходные данные
0
F. Лотерея
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Лёлик любит играть в лотерею, а также жульничать. И недавно он нашёл лазейку в системе принятия лотерейных билетов! Существует задержка между оглашением выигрышной комбинации номеров и завершением принятия билетов.

Правила лотереи, как всегда, просты. Участник покупает лотерейный билет, на котором написаны $$$n$$$ положительных целых чисел. Затем в определённый день оглашаются $$$n$$$ положительных целых чисел — выигрышные номера. Все участники их увидят как массив целых чисел $$$b$$$. Также заранее оглашаются призы: если $$$i$$$-й элемент билета участника совпадает с $$$i$$$-м элементом выигрышного билета, участник получает $$$c_i$$$ монет.

Лёлик решил использовать лазейку в системе для своего обогащения. У него есть официальный шаблон лотерейного билета, который представляет собой массив $$$a$$$ размера $$$n$$$, заполненный единицами. Также у Лёлика есть аппарат для изменения цифр на билете.

К сожалению, аппарат самодельный, и работает следующим образом. Лёлик может выбрать два целых числа $$$i$$$ ($$$1 \leq i \leq n$$$) и $$$z$$$ ($$$z \gt 0$$$) и увеличить $$$a_i$$$ на $$$\left\lfloor \frac{a_i}{z} \right\rfloor$$$ (частное от деления $$$a_i$$$ на $$$z$$$, округлённое вниз). Лёлик может выбирать одно и то же $$$i$$$ для операций сколько угодно раз.

Но этот процесс не быстрый, а время лазейки ограничено. Всего Лёлик сможет совершить не более $$$k$$$ операций. Поэтому он попросил вас максимизировать свой выигрыш.

Ваша задача — определить максимальное количество монет, которое может получить Лёлик за не более чем $$$k$$$ операций.

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

Первая строка содержит одно целое число $$$n$$$ ($$$1 \leq n \leq 10^3$$$) — количество чисел в лотерейном билете.

Вторая строка содержит одно целое число $$$k$$$ ($$$0 \leq k \leq 10^6$$$) — максимальное число операций.

Третья строка содержит $$$n$$$ целых чисел $$$b_i$$$ ($$$1 \leq b_i \leq 10^3$$$) — выигрышный лотерейный билет.

Четвёртая строка содержит $$$n$$$ целых чисел $$$c_i$$$ ($$$0 \leq c_i \leq 10^6$$$) — количества монет, получаемые за совпадения.

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

Единственное число — максимальное количество монет, которое можно получить, совершив не более $$$k$$$ операций.

Примеры
Входные данные
3
3
1 2 3
3 2 1
Выходные данные
6
Входные данные
3
0
2 3 4
1 1 1
Выходные данные
0
Входные данные
5
9
7 5 3 5 3
2 5 3 2 5
Выходные данные
13
G. Веса эволюционных деревьев
ограничение по времени на тест
4.5 секунд
ограничение по памяти на тест
512 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

В Институте Морской Биологии открыли несколько новых видов глубоководных моллюсков, и теперь стараются понять их генеалогию. Для этого лаборант Петя извлёк некоторый конкретный участок генома у каждого вида моллюсков, а лаборант Вася построил $$$T$$$ предположительных частичных эволюционных деревьев на основе внешних признаков.

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

Для каждого вида учёные наблюдают один и тот же участок генома, который представляется в виде строки из символов A, G, C и T (каждый символ отображает один нуклеотид). Известно, что у всех видов этот участок имеет одну и ту же длину, но в процессе эволюции некоторые нуклеотиды могли замениться на другие (удалений и добавлений нуклеотидов без замены произойти не могло). При этом каждому из современных видов соответствует один из $$$G$$$ участков генома, извлечённых Петей, а участки генома видов-прародителей неизвестны.

Из предыдущих эмпирических наблюдений Пете и Васе известно, что эволюция — медленный процесс, и поэтому для каждого дерева, построенного Васей, они хотят определить его наименьший возможный вес. Весом эволюционного дерева при этом называется сумма весов рёбер этого дерева, а весом ребра — количество изменившихся нуклеотидов между видом-предком и видом-потомком.

Сами лаборанты не смогли решить такую задачу, поэтому просят Вас помочь им!

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

В первой строке задано целое число $$$G$$$ ($$$0 \le G \le 500$$$) — количество участков генома, извлечённых Петей.

В последующих $$$G$$$ строках заданы эти участки, по одному в строке. Участки представлены в виде строк из символов A, G, C и T. Гарантируется, что длины всех строк одинаковы и не превышают $$$500$$$.

Далее в отдельной строке задано целое число $$$T$$$ ($$$0 \le T \le 100$$$) — количество частичных эволюционных деревьев, построенных Васей. Далее идут $$$T$$$ описаний этих деревьев.

Первая строка описания дерева состоит из двух целых чисел: $$$N$$$ и $$$M$$$ ($$$0 \le M \le N \le 500$$$) — количества вершин и листьев в дереве соответственно.

Если $$$N$$$ положительное, в последующих $$$N - 1$$$ строках заданы родители вершин: в $$$i$$$-й из этих строк записан родитель вершины $$$i + 1$$$. Первая вершина является корнем, и родителя у неё нет.

В каждой из последних $$$M$$$ строк описания записаны по два целых числа: $$$v$$$ и $$$g$$$ — номер вершины дерева, являющейся листом, и номер соответствующего ему генома из библиотеки Пети. Каждый лист дерева встречается в этих строках ровно один раз. Корень считается листом, когда он — единственная вершина дерева.

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

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

Примеры
Входные данные
2
AC
TC
1
4 2
1
2
2
3 1
4 2
Выходные данные
1
Входные данные
3
AG
GT
GC
2
5 3
1
1
2
2
3 1
4 2
5 3
3 2
1
1
2 2
3 3
Выходные данные
3
1
H. Подпоследовательность с заданными разностями
ограничение по времени на тест
4 секунды
ограничение по памяти на тест
256 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Даны последовательность различных целых чисел и множество разрешённых разностей. Необходимо найти длину самой длинной возрастающей подпоследовательности, в которой разность между любыми двумя соседними элементами — разрешённая. Например, если разрешённые разности равны $$$1$$$ и $$$3$$$, то подпоследовательность $$$1, 4, 5, 8$$$ будет удовлетворять условию, а последовательность $$$1, 2, 4$$$ — нет, так как разность второго и третьего элемента равна $$$2$$$.

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

Первая строка содержит два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n \le 10^6$$$ и $$$1 \le k \le 10$$$) — количество элементов в последовательности и количество разрешённых разностей соответственно. Вторая строка содержит $$$n$$$ различных целых чисел $$$s_i$$$ ($$$1 \le s_i \le 10^9$$$) — элементы последовательности. Третья строка содержит $$$k$$$ различных целых чисел $$$d_i$$$ ($$$1 \le d_i \le 10^9$$$) — разрешённые разности.

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

Одно целое положительное число — длина самой длинной возрастающей подпоследовательности с разрешёнными разностями.

Примеры
Входные данные
7 2
2 5 6 3 8 10 9
3 1
Выходные данные
4
Входные данные
9 2
2 5 6 3 8 10 9 7 12
1 3
Выходные данные
5
I. Сумма длин путей
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мебибайт
ввод
стандартный ввод
вывод
стандартный вывод

Дано неориентированное дерево из $$$n$$$ вершин. Найдите сумму длин всех простых путей в нём.

Длина простого пути между вершинами $$$u$$$ и $$$v$$$ — это минимальное количество рёбер, по которым нужно пройти, чтобы попасть из $$$u$$$ в $$$v$$$.

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

В первой строке задано целое число $$$n$$$ ($$$1 \le n \le 300\,000$$$).

В следующей строке записано $$$n - 1$$$ целое число $$$p_2, p_3, \ldots, p_n$$$ ($$$1 \le p_i \lt i$$$). Они означают, что в дереве есть ребро между $$$2$$$ и $$$p_2$$$, ребро между $$$3$$$ и $$$p_3$$$, ..., ребро между $$$n$$$ и $$$p_n$$$. Гарантируется, что заданные рёбра образуют дерево.

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

Выведите одно целое число: сумму по всем $$$(u, v)$$$, где $$$1 \le u \le v \le n$$$, длин простых путей между $$$u$$$ и $$$v$$$.

Пример
Входные данные
5
1 1 3 1
Выходные данные
18