Я наткнулся на этот вопрос от interviewstreet.comДвунаправленный покрывающее дерево
Машины вновь напали на королевство Xions. Королевство города Сион имеет N городов и N-1 двунаправленных дорог. Дорожная сеть - , так что между любыми парами городов существует уникальный путь.
У Morpheus есть новости, что K Machines планируют уничтожить все королевство . Эти машины изначально проживают в K разных городах города, и в любое время они могут планировать и запускать атаку . Поэтому он попросил Нео уничтожить некоторые из дорог, чтобы сорвать связь между машинами i.e после разрушения этих дорог там не должно быть никакого пути между любыми двумя машинами.
Поскольку атака может быть в любое время с этого момента, Нео должен выполнить эту задачу как можно быстрее. Каждая дорога в королевстве занимает определенное время до , и они могут быть уничтожены только по одному за раз.
Вам необходимо написать программу, которая сообщит Neo о минимальном количестве времени , который потребует нарушения связи между машинами.
Пример ввода Первая строка ввода содержит два разделенных пробелами целых чисел , N и K. Города нумеруются от 0 до N-1. Затем следуйте за N-1 строками, каждая из которых содержит три целых числа с пробелами, x y z, которые означает, что существует двунаправленная дорога, соединяющая города x и город y, и , чтобы уничтожить эту дорогу, она занимает z единиц времени. Затем следуют K строк , каждый из которых содержит целое число. Ith integer - это идентификатор города, в котором находится Машина.
Формат вывода Печать в одной строке минимальное время, необходимое для , нарушает соединение между машинами.
Пример ввода
5 3 2 1 8 1 0 5 2 4 5 1 3 4 2 4 0
Пример вывода
10
Объяснение Neo может разрушить дорогу, связывающую город 2 и город 4 из веса 5, и дорога, соединяющая город 0 и город 1 веса 5. Как только одна дорога может быть уничтожена за раз, общее минимальное время, принятое - 10 единиц времени. После разрушения этих дорог ни одна из Машины не может добраться до другой машины по любому пути.
Ограничения
2 <= N <= 100,000 2 <= K <= N 1 <= time to destroy a road <= 1000,000
Может кто-то идею, как подойти к решению.
Вот подсказка: если есть вершины 'N' и ребра N-1, а граф все еще подключен (нет« островов »), тогда граф является * прямой *. –
Ваш комментарий к моему ответу был верным - вышеприведенные условия не подразумевают прямой график. На данный момент я удалил свой ответ. –