0BFS将无根树转化为有根树。

1bef[x]=y。表示x的父亲是y。这样建树构成了一片森林。

2、Access(x)。表示以x为起点,一直到根节点,构造出一条链。这条链用splay维护,可以很好的支持插入和删除操作。这条链只有根节点与原树有联系。

3Splay(x)。同伸展树,用于维护提取出的链。通过splay操作,使得均摊logn。

4MakeRoot(x)。表示把x节点设为根。一棵树根的变化,仅与x到根的路径有关,即把路径反向即可。因此相当于把x到根的链翻转,bef构成的森林不变。

 

 

 

A操作1:link,操作2:cut。

【HDU】2475 Box

 

 

B路径中单点更新/成段更新/查询。(其实这一大坨都可以用树链剖分搞)

【SPOJ】375 Query on a tree

【FOJ】2082 过路费

【HYSBZ】1036 树的统计Count

【URAL】1553 Caves and Tunnels

【CodeForces】191C Fools and Roads

【POJ】3237 Tree

【HDU】3966 Aragorn's Story

【POJ】2763 Housewife Wind

【SPOJ】913 Query on a tree II

【SPOJ】2798 Query on a tree again!

 

 

CA与B的结合。

【HYSBZ】2002 Bounce 弹飞绵羊

【HDU】4010 Query on The Trees

posted on 2012-08-26 23:39  DrunBee  阅读(3489)  评论(0编辑  收藏  举报