<p>I'm not aware that this is possible to do in the general case, but if you know certain properties of the graph (such as its "distance from cycle-freeness" as described in the paper below), there exist randomized algorithms that with high probability will find a cycle quickly.  Specifically, see the first algorithm in section 3 of the linked paper, with the corresponding analysis explaining how to extract the cycle.</p>

<p>As for deterministic algorithms, Mr. Saurav's answer is correct. In the worst case, you'll at least have to scan the entire input in order to correctly determine whether or not there is a cycle, which already requires O(|V| + |E|) time.</p>

<p>[1] <a href="http://arxiv.org/abs/1007.4230" rel="nofollow">http://arxiv.org/abs/1007.4230</a></p>
Which is the best (in time complexity) algorithm for finding a cycle in directed graph?
<p>Also are there any randomized algorithms for that. I need to find a single cycle as fast as possible, not all cycles.</p>