public CycleDetect(DiGraph g) {
   marked = new boolean[g.V()];
   onStack = new boolean[g.V()];
   edgeTo = new int[g.V()];
   for (int v = 0; v < g.V(); v++) if (!marked(v)) dfs(g, v);
 }