很多写的不优雅的 lct\text{lct}lct 被卡常了。
首先是检查你的 pushup\text{pushup}pushup 是否简洁,这是非常重要的。
然后就是一个很大的优化。
一般的写法不是把边拆成点了吗,然后你连接两个点的时候要 link(e[x].u, x + n), link(e[x].v, x + n),这是没问题的,但是当你断开这条边的时候,一般的写法是 cut(e[x].u, x + n), cut(e[x].v, x + n),但是实际上只需要 cut(e[x].u, x + n) 就可以起到断开这条边的作用,原因显然。
link(e[x].u, x + n), link(e[x].v, x + n)
cut(e[x].u, x + n), cut(e[x].v, x + n)
cut(e[x].u, x + n)