Стрункий Остов#5831

Стрункий Остов

5 секунд
64 мегабайти
Середня

Дано неорієнтований зважений граф . Потрібно знайти одне з остовних дерев, визначених наступним чином.

Граф є впорядкованою парою (V, E), де — це множина вершин \{v_1, v_2, \ldots, v_n\}, а — це множина неорієнтованих ребер \{e_1, e_2, \ldots, e_m\}. Кожне ребро має свою вагу .

Остовне дерево — це дерево (зв'язний підграф без циклів), яке з'єднує всі вершини за допомогою n-1 ребер. Стрункість остовного дерева визначається як різниця між найбільшою вагою та найменшою вагою серед n-1 ребер .

Рисунок 1: Граф та ваги ребер

Наприклад, граф на Рисунку 1(a) має чотири вершини \{v_1, v_2, v_3, v_4\} та п'ять неорієнтованих ребер \{e_1, e_2, e_3, e_4, e_5\}. Ваги ребер: w(e_1) = 3, w(e_2) = 5, w(e_3) = 6, w(e_4) = 6, w(e_5) = 7, як показано на Рисунку 1(b).

Рисунок 2: Приклади остовних дерев

Існує кілька остовних дерев для . Чотири з них зображені на Рисунку 2(a)'(d). Остовне дерево T_a на Рисунку 2(a) має три ребра, ваги яких , і . Найбільша вага — , а найменша вага — , тому стрункість дерева T_a дорівнює . Стрункість остовних дерев T_b, T_c і T_d, показаних на Рисунку 2(b), (c) і (d), дорівнює , і відповідно. Легко побачити, що стрункість будь-якого іншого остовного дерева більша або дорівнює , отже, остовне дерево T_d на Рисунку 2(d) є одним з найстрункіших остовних дерев, стрункість якого дорівнює .

Ваше завдання — написати програму, яка обчислює найменшу стрункість.

Вхідні дані

Вхід складається з кількох наборів даних, за якими слідує рядок, що містить два нулі, розділені пробілом. Кожен набір даних має наступний формат.

a_1 b_1 w_1

a_m b_m w_m

Кожен елемент введення в наборі даних є невід'ємним цілим числом. Елементи в рядку розділені пробілом.

— це кількість вершин, а — кількість ребер. Можна припустити, що 2 \leq n \leq 100 і 0 \leq m \leq n(n-1)/2. a_k і b_k (k = 1, \ldots, m) є додатними цілими числами, меншими або рівними , які представляють дві вершини v_{a_k} і v_{b_k}, з'єднані -м ребром e_k. w_k є додатним цілим числом, меншим або рівним , що вказує на вагу e_k. Можна припустити, що граф G = (V, E) є простим, тобто не має петель (які з'єднують одну й ту ж вершину) і паралельних ребер (які є двома або більше ребрами, обидва кінці яких є одними й тими ж двома вершинами).

Вихідні дані

Для кожного набору даних, якщо граф має остовні дерева, слід вивести найменшу стрункість серед них. В іншому випадку, слід вивести . Вивід не повинен містити зайвих символів.

Приклади

Приклад 1

Loading
Loading