private KosarajuSharirSCC(Digraph<V> digraph) { ids = new HashMap<>(digraph.vertexCount()); visited = new HashSet<>(digraph.vertexCount()); size = new int[digraph.vertexCount()]; DepthFirstOrder<V> dfo = DepthFirstOrder.from(digraph.reverse()); for (V vertex : dfo.reversePost()) { if (!visited.contains(vertex)) { dfs(digraph, vertex); count++; } } }