public StronglyConnectedComponents(Digraph G)
	{
		marked = new boolean[G.V()];
		id = new int[G.V()];

		OrderDirectedDFS order = new OrderDirectedDFS(G);
		for (int v : order.reversePostOrder())
			if (!marked[v])
			{
				dfs(G.reverse(), v);
				count++;
			}
	}