TC(const Graph &G) : G(G)
	{
		Gsc = new SC<Graph>(G);
		K = new DenseGRAPH(Gsc->count(), true);
		for (int v = 0; v < G.V(); ++v) {
			typename Graph::adjIterator A(G, v);
			for (int t = A.beg(); !A.end(); t = A.nxt()) {
				K->insert(Edge(Gsc->ID(v), Gsc->ID(t)));
			}
			Ktc = new dagTC<DenseGRAPH, Graph>(*K);
		}
	}
	bool reachable(int v, int w) {
		return Ktc->reachable(Gsc->ID(v), Gsc->ID(w));
	}