Описание

Ограничение по времени: 500 ms
Ограничение по памяти: 256 Mb

Ответы на вопросы

Задача: Barn Tree

Обратите внимание: время на тест для этой программы 4 сек, в два раза больше чем обычно. Ограничение по памяти также в два раза выше чем обычно.**

На ферме Джона имеется \(N\) амбаров (\(2 \leq N \leq 2\cdot 10^5\)) пронумерованных \(1 \dots N\). Имеется \(N-1\) дорог, где каждая дорога соединяет два амбара и от любого амбара до любого другого можно добраться посредством некоторой последовательности дорог. В \(j\)-ом амбаре имеется \(h_j\) снопов сена (\(1\le h_j\le 10^9\)).

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

Определите последовательность действий ФД, чтобы добиться цели за минимальное количество действий. Гарантируется, что такая последовательность существует.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка ввода содержит значение \(N.\)

Вторая строка ввода содержит разделённые одиночным пробелами значения \(h_j\) для \(j = 1 \dots N\).

Каждая из последних \(N-1\) строк ввода содержи два разделённых одиночным пробелами числа \(u_i \ v_i\), указывающих, что имеется двунаправленная дорога, соединяющая амбары \(u_i\) и \(v_i\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите минимальное количество действий, за которым следует последовательность этих действий по одному в строке.

Каждое действие описывается тремя разделёнными одиночными пробелами положительными целыми числами: амбар-источник, амбар-приёмник, количество снопов сена, перевозимых из источника в приёмник.

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


Прикрепите файл с исходным кодом программы:
     
или введите исходный код на языке:


Правила оформления программ и список ошибок при автоматической проверке задач
           

Ваш ответ:

Загруженные файлы:


Нет

Примечание учителя: