public AcyclicSP(EdgeWeightedDigraph G, int s)
	{
		distTo = new double[G.V()];
		for (int i = 0; i < G.V(); i++)
			distTo[i] = Double.POSITIVE_INFINITY;
		distTo[s] = 0;
		edgeTo = new WeightedDirectedEdge[G.V()];

		Topological topological = new Topological(G.digraph());
		for (Integer v : topological.order())
			relax(G, v);
	}