在有的板子中,findroot 最后会把对应节点翻转到顶端以防止出现反复顺着倒着搜同一条长链导致的超时现象。但本题不需要,因为搜的点基本是相同的,加上了反而会超时。
int findroot(int x){ access(x); splay(x); while(lc(x)) pushdown(x), x=lc(x); // splay(x); return x; }