eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Disclosure

Disclosure

Задано ациклічний орієнтовний граф з \textbf{N }вершин та \textbf{K }ребер. Потрібно видалити з нього максимальну кількість ребер, щоб транзитивне замикання графа не змінилось. Транзитивне замикання графа \textbf{G} - граф \textbf{G'}, який складається з множини вершин заданого графа \textbf{G }і множини ребер (\textbf{u}, \textbf{v}) таких, що існує шлях з вершини \textbf{u }у вершину \textbf{v }у графі \textbf{G}. \InputFile У першому рядку два числа \textbf{N }і \textbf{K}. Далі \textbf{K }рядків, у кожному з яких по два цілих числа \textbf{a_i} та \textbf{b_i}, які позначають наявність ребра, яке веде з вершини \textbf{a_i} у \textbf{b_i}. Граф не містить петель, циклів і кратних ребер. \OutputFile Вивести ті ребра, які необхідно залшти у графі, у вигляді пар з'єднаних ними вершин. Ребра можна виводити у довільному порядку. \textbf{Обмеження} \textbf{1} ≤ \textbf{N} ≤ \textbf{50000} \textbf{0} ≤ \textbf{K} ≤ \textbf{50000} \textbf{1} ≤ \textbf{a_i}, \textbf{b_i} ≤ \textbf{N}
Ліміт часу 1 секунда
Ліміт використання пам'яті 512 MiB
Вхідні дані #1
5 6
1 2
2 3
3 5
4 5
1 5
1 3
Вихідні дані #1
1 2
2 3
3 5
4 5