在对每个结点进行DFS的基础上进行了一些优化。
优化原理:在findCycle(v,e) 中访问过的点,不再进行findCycle(). 因为这些点若还构成有其它的环,那么在递归到该点时会查找出来。
本方法中输出的环,结点不是按其在环中的先后位置排列的。
1 import java.util.*; 2 3 public class GetAllCyclesForDirectedGraph{ 4 static List<Integer> trace; 5 static Set<Integer> searched=new HashSet<>