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

Задача . E. Ехаб и задача о выборе компонент


Вам дано дерево, состоящее из \(n\) вершин. Каждая вершина \(u\) имеет некоторый вес \(a_u\). Вы хотите выбрать целое число \(k\) \((1 \le k \le n)\), а затем выбрать \(k\) связных компонент, которые не пересекаются друг с другом (каждая вершина находится максимум в одной компоненте). Пусть вы выбрали компоненты, в совокупности содержащие множество вершин \(s\). Вы хотите максимизировать следующее значение:

\(\)\frac{\sum\limits_{u \in s} a_u}{k}\(\)

Другими словами, вы хотите максимизировать сумму весов вершин из \(s\), деленную на количество выбранных вами компонент. Также, если возможных решений несколько, вы хотите максимизировать \(k\).

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

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

В первой строке содержится одно целое число \(n\) \((1 \le n \le 3 \cdot 10^5)\), количество вершин в дереве.

Во второй строке содержатся \(n\) целых чисел \(a_1\), \(a_2\), \(\dots\), \(a_n\) \((|a_i| \le 10^9)\), веса вершин данного дерева.

Далее следует \(n-1\) строка, в каждой из которых содержатся по два целых числа\(u\) и \(v\) \((1 \le u,v \le n)\). Это означает, что между \(u\) и \(v\) есть ребро в данном дереве.

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

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

Примечание

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

В первом примере оптимально выбрать все дерево.

Во втором примере есть только один вариант выбора (выбрать компоненту, содержащую единственную вершину 1) потому что нельзя выбирать 0 компонент.

В третьем примере следует заметить, что можно было выбрать, например, только вершину 1 или вершины 1 и 3, или все дерево, и результирующая дробь во всех этих случая имела бы значение -1, но необходимо максимизировать \(k\).

В четвертом примере оптимально выбрать вершины 1 и 3.


Примеры
Входные данныеВыходные данные
1 3
1 2 3
1 2
1 3
6 1
2 1
-2
-2 1
3 3
-1 -1 -1
1 2
2 3
-3 3
4 3
-1 -2 -1
1 2
1 3
-2 2

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

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