动态树之详解(二)

2015-07-20 17:34:06 · 作者: · 浏览: 9
ot(q)) //若已经在一棵树上,退出 return; Makeroot(p); //不解释 p->pa = q; } void Cut(Node *p, Node *q) { if (p == q || Findroot(p) != Findroot(q)) return; Makeroot(p); Access(q); splay(q); //不解释 if (q->l == p) { q->l = p->pa = null; q->
up(); } } void Change(Node *q, int c) { splay(q); q->val = c; q->up(); } int getpath(Node *p, Node *q) {//很显然 Makeroot(p); Access(q); splay(q); return q->sum; }
好吧,言尽于此。。。