Андроид Вася делает проект по урбанистике.
Цель проекта — улучшить инфраструктуру города, в котором он живет.
Сейчас город представляет собой n районов, некоторые из которых соединены дорогами.
Используя эти дороги, можно добраться на автомобиле из любого района в любой другой.
Вася думает, что слишком большое количество дорог в городе побуждает
горожан пользоваться личным автотранспортом вместо того, чтобы ходить
пешком или ездить на велосипеде. Он хочет закрыть для движения автомобилей
максимальное число дорог, превратив их в пешеходные бульвары. Естественно,
после этого должна сохраниться возможность добраться на автомобиле по
дорогам из любого района в любой.
Сейчас за пользование каждой дорогой автомобилисты платят деньги, причем цены за использование разных дорог могут сильно отличаться.
Вася думает, что если оставить открытыми для проезда автомобилей как очень
дешевые, так и очень дорогие дороги, то это может повысить социальную
напряженность в городе.
Поэтому он хочет минимизировать разницу между стоимостью проезда по самой дорогой и самой дешевой дороге среди тех, что останутся открытыми.
Помогите Васе выбрать дороги, которые нужно сохранить.
Исходные данные
В первой строке даны целые числа n и m — количество районов и дорог соответственно (2 ≤ n ≤ 50000; n − 1 ≤ m ≤ 50000).
В следующих m строках даны тройки целых чисел ai, bi и ci, означающие, что между районами ai и bi есть дорога стоимости ci (1 ≤ ai, bi ≤ n; ai ≠ bi; 1 ≤ ci ≤ 109).
Между любой парой районов может быть несколько дорог.
Результат
В единственной строке выведите последовательность номеров дорог, которые стоит оставить открытыми для проезда.
Дороги нумеруются целыми числами от 1 до m в том порядке, в котором они
были описаны во входных данных.
Если возможных решений несколько, выведите любое из них.
Примеры
исходные данные | результат |
---|
3 3
1 2 1
2 3 3
3 1 4
| 2 3
|
4 5
1 2 1
2 3 1
1 3 2
1 4 2
2 4 1
| 1 2 5
|
Автор задачи: Никита Бурлаков
Источник задачи: XIX Открытый чемпионат Урала по спортивному программированию (апрель, 2015)