Для края (u, v):
1 - выполнить поиск по глубине, начиная с u, определить, найден ли v и существует ли задний край вдоль пути к v.
2 - выполнить поиск в глубину из v, если u найден, и задний край существует для u, то есть цикл, который включает в себя и u, и v.
Другими словами,
1 - выполнить DFS, начиная с u, проверить, существует ли задний фронт и v еще не завершено.
2 - выполнить DFS, начиная с v, проверить, существует ли задний фронт и u еще не закончил
если оба условия выполняются, то ребро (u, v) принадлежит циклу.