public Iterable<WeightedDirectedEdge> pathTo(int v)
	{
		if (!hasPathTo(v))
			return null;
		LinkedList<WeightedDirectedEdge> stack = new LinkedList<WeightedDirectedEdge>();
		for (WeightedDirectedEdge e = edgeTo[v]; e != null; e = edgeTo[e.from()])
			stack.addFirst(e);
		return stack;
	}