Я собираюсь предположить, что вы довольно долго рассматривали эту проблему: чтение решения не помогает, вы только лучше решаете эти проблемы, решая их сами .
Итак, нужно заметить, что вход - это дерево. Это означает, что каждый край соединяет 2 меньших дерева вместе. Удаление края дает 2 отключенных дерева (лес из 2 деревьев).
Итак, если вы вычислите размер дерева на одной стороне ребра, а затем на другой, вы сможете взглянуть на ребра узла и спросить: «Каков размер дерева на другой стороне?» этого края? "
Вы можете рассчитать размеры деревьев с помощью динамического программирования - ваше состояние повторения: «На каком ребре я нахожусь? На какой стороне ребра я нахожусь?» и он вычисляет размер дерева, «подвешенного» в этом узле. В этом суть проблемы.
Имея эти данные, достаточно перебрать все узлы, посмотреть на их ребра и спросить: «Каков размер дерева на другой стороне этого ребра?» Оттуда вы просто выбираете минимум.
Надеюсь, это поможет.