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

Лишние ребра

Лишние ребра

Рассмотрим ориентированный граф G, состоящий из n вершин и m ориентированных ребер. Вершины пронумерованы от 1 до n, а ребра от 1 до m. Давайте выберем некоторую вершину r как начальную и найдем все вершины, достижимые из r в результате движения по ребрам (определим это множество как C0). Определим C(e) как множество всех вершин, достижимых из r по ребрам кроме одного с номером e. Ребро e назовем лишним, если C(e) равно C0.

Задан граф G и начальная вершина r. Найдите все лишние ребра.

Входные данные

Первая строка содержит три числа n, m и r (1n100000, 1m200000, 1rn): количество вершин, количество ребер и начальную вершину. Следующие m строк описывают ребра графа: i-ая из них содержит два числа ai и bi (1ai, bin) задающие ориентированное ребро от вершины ai к bi. Гарантируется отсутствие циклов, а для любых двух вершин u и v существует не более одного ребра от u к v.

Выходные данные

В первой строке вывести количество лишних ребер. Во второй строке вывести номера всех лишних ребер в произвольном порядке. Ребра стартуют с 1 в соответствии с порядком на входе.

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
3 3 1
1 2
2 3
3 1
Выходные данные #1
1
3
Входные данные #2
4 6 2
2 1
2 3
3 1
3 4
1 4
4 2
Выходные данные #2
5
1 3 4 5 6
Источник 2013 Петрозаводск, Moscow SU ST + NNSU Contest, День 2, Август 24, Задача J