个人在写左偏树弹出堆顶元素的时候:
fa[l[x]] = fa[r[x]] = merge(l[x],r[x]);
然后寄了,经过乱搞深思熟虑,把死点的祖先也改了一下,变成了:
fa[l[x]] = fa[r[x]] = fa[x] = merge(l[x],r[x]);
就奇迹般的可以了。
请问一下 dalao 们,这个是不是因为并查集加了路径压缩,才导致一些点跳过死点的左右儿子直接连上了死点,所以要如此处理?