public void decreaseKey(Node x, double k)
	{
		if (k > x.key)
		{
			throw new IllegalArgumentException(
					"decreaseKey() got larger key value");
		}

		x.key = k;
		Node y = x.parent;

		if ((y != null) && (x.key < y.key))
		{
			cut(x, y);
			cascadingCut(y);
		}

		if (min == null || x.key < min.key)
		{
			min = x;
		}
	}