0、BFS将无根树转化为有根树。
1、bef[x]=y。表示x的父亲是y。这样建树构成了一片森林。
2、Access(x)。表示以x为起点,一直到根节点,构造出一条链。这条链用splay维护,可以很好的支持插入和删除操作。这条链只有根节点与原树有联系。
3、Splay(x)。同伸展树,用于维护提取出的链。通过splay操作,使得均摊logn。
4、MakeRoot(x)。表示把x节点设为根。一棵树根的变化,仅与x到根的路径有关,即把路径反向即可。因此相当于把x到根的链翻转,bef构成的森林不变。
A、操作1:link,操作2:cut。
B、路径中单点更新/成段更新/查询。(其实这一大坨都可以用树链剖分搞)
【CodeForces】191C Fools and Roads
【SPOJ】2798 Query on a tree again!
C、A与B的结合。