Study a bit LCT, think access and splay are small problems, back back board can be solved, then according to these two basic operation, there are many different conversion, a lot of practical use.
Access: Make it to the edge of the root node on the back side, and with its heavy son cut off
First Move_to_root (x), set X to the root of the original tree, the X-to-root point to form a splay, but at this point x is only the root of the secondary tree, so to change it to the root of the original tree, just the depth of all sung, and then you can.
void move_to_root (int x) { access (x); Splay (x); reverse (x);}
No.2 Find_root (x), find the root of x in the auxiliary tree, this is a good understanding, just look up.
No.3 link (x, y) (no map)
void link (int x,int y) { access (x); Fa[x]=y;}
No.4 Cut (x, y) changes the x to the root of the main tree and then y access+splay
void cut (int x,int y) { move_to_root (x); Access (y); Splay (y); fa[x]=0; c[y][0]=0;}
No.5 on the chain, and to make a node in a chain happen in a splay
void split (int x,int y) { move_to_root (x); Access (y); Access (x);}
All the paths on the x->y are in a tree with Y as a subtree, just Mark Y to
LCT all kinds of operation small record