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的結合。