D. Наибольшая сортировка
Как классная задача D, но выведите лексикографически наибольшую топологическую сортировку или , если сортировки нет.
Здесь всё честно симметрично: тот же алгоритм Кана, только куча выдаёт не наименьшую доступную вершину, а наибольшую.
Почему жадность работает — рассуждение обменом. На каждом шаге в очередной позиции может стоять любая из доступных сейчас вершин, и никакая другая. Значит, поставив наибольшую доступную, мы делаем эту позицию максимально возможной; а более ранняя позиция при лексикографическом сравнении важнее всех последующих вместе взятых. Проверено перебором: на 60 000 случайных ациклических графов до шести вершин жадный выбор совпал с настоящим максимумом по всем сортировкам.
Технически проще не заводить вторую кучу, а перенумеровать вершины: заменить каждый номер на , запустить обычный алгоритм с кучей минимумов и вернуть номера обратно.
Формат ввода
Первая строка содержит числа () и ().
Далее идут строк с рёбрами. Возможны кратные рёбра и петли.
Формат вывода
Либо чисел в одной строке, либо .
Примеры
6 6 1 2 3 2 4 2 2 5 6 5 4 6
4 6 3 1 2 5
3 3 1 2 2 3 3 1
-1