EduBrick

D. Наибольшая сортировка

3000 мс · 256 МБ · всё или ничего

Как классная задача D, но выведите лексикографически наибольшую топологическую сортировку или −1-1, если сортировки нет.

Здесь всё честно симметрично: тот же алгоритм Кана, только куча выдаёт не наименьшую доступную вершину, а наибольшую.

Почему жадность работает — рассуждение обменом. На каждом шаге в очередной позиции может стоять любая из доступных сейчас вершин, и никакая другая. Значит, поставив наибольшую доступную, мы делаем эту позицию максимально возможной; а более ранняя позиция при лексикографическом сравнении важнее всех последующих вместе взятых. Проверено перебором: на 60 000 случайных ациклических графов до шести вершин жадный выбор совпал с настоящим максимумом по всем сортировкам.

Технически проще не заводить вторую кучу, а перенумеровать вершины: заменить каждый номер vv на n+1−vn + 1 - v, запустить обычный алгоритм с кучей минимумов и вернуть номера обратно.

Формат ввода

Первая строка содержит числа nn (1≤n≤1051 \le n \le 10^5) и mm (0≤m≤1050 \le m \le 10^5).

Далее идут mm строк с рёбрами. Возможны кратные рёбра и петли.

Формат вывода

Либо nn чисел в одной строке, либо −1-1.

Примеры

ввод
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
Войдите, чтобы отправлять решения.