Зайві ребра
Розглянемо орієнтований граф G, що складається з n вершин і m орієнтованих ребер. Вершини пронумеровані від 1 до n, а ребра від 1 до m. Оберемо деяку вершину r як початкову і визначимо всі вершини, до яких можна дістатися з r шляхом руху по ребрах (позначимо цю множину як C[0]
). Визначимо C(e) як множину всіх вершин, досяжних з r по ребрах, за винятком одного ребра з номером e. Ребро e називається зайвим, якщо C(e) дорівнює C[0]
.
Задано граф G і початкова вершина r. Знайдіть всі зайві ребра.
Вхідні дані
Перша стрічка містить три числа n, m і r (1 ≤ n ≤ 100000, 1 ≤ m ≤ 200000, 1 ≤ r ≤ n): кількість вершин, кількість ребер і початкова вершина. Наступні m рядків описують ребра графа: i-ий з них містить два числа a[i]
і b[i]
(1 ≤ a[i]
, b[i]
≤ n), що задають орієнтоване ребро від вершини a[i]
до b[i]
. Гарантується відсутність циклів, а для будь-яких двох вершин u і v існує не більше одного ребра від u до v.
Вихідні дані
У першому рядку виведіть кількість зайвих ребер. У другому рядку виведіть номери всіх зайвих ребер у довільному порядку. Нумерація ребер починається з 1 відповідно до порядку на вході.