Мне нравится ответ Бхаввы: но это поможет, если я подробно опишу его.
Обычно, если вы используете DFS, у вас есть посещенный массив, который содержит либо состояние посещения, либо не посетил.
Теперь у
int visited[N];//N is the number of nodes/vertices in graph
Пусть
visited[i] =-1 if i-th vertex is not yet visited
visited[i] = 0 if i-th vertex is being processed
visited[i] = 1 if processing of i-th vertex is done
Таким образом, если вы столкнулись с вершины вместе с ДФС посещаемой значение 0, это означает, что у вас есть cycle.To найти вершины на цикл, используйте предшественника, чтобы сохранить предыдущую вершину в пути.
Возможный [дубликат] (http://cs.stackexchange.com/questions/7216/find-the-simple-cycles-in-a-directed-graph)? –
Я не понимаю, о чем именно вы просите. Вам задан простой цикл и нужно найти вершины на нем? Как этот цикл указан? Вам задан граф и нужно отфильтровать любые вершины, не в каком-либо цикле где-нибудь? –
, учитывая граф G = (V, E), найдем группу вершин U, так что каждая вершина u, принадлежащая U, является вершиной на простом цикле – Amnon