Я не знаю, что это возможно сделать в общем случае, но если вы знаете определенные свойства графика (такие как «расстояние от цикла-свободности», как описано в статье ниже), существуют рандомизированныеалгоритмы, которые с высокой вероятностью быстро найдут цикл.В частности, см. Первый алгоритм в разделе 3 связанной статьи с соответствующим анализом, объясняющим, как извлечь цикл.
Что касается детерминированных алгоритмов, ответ г-на Саурава является правильным.В худшем случае вам, по крайней мере, придется сканировать весь ввод, чтобы правильно определить, существует ли цикл, для которого уже требуется время O (| V | + | E |).
[1] http://arxiv.org/abs/1007.4230