public void decreaseKey(final AStarNode x, final int c) {
		if (c > x.cost) {
			System.err.println("Error: new key is greater than current key.");
			return;
		}
		x.cost = c;
		final AStarNode y = x.parent;
		if ((y != null) && (x.cost < y.cost)) {
			cut(x, y);
			cascadingCut(y);
		}
		if (x.cost < this.min.cost) {
			this.min = x;
		}
	}