全 WA ,枯了
问一下 lct 这样写没有错吧 /kel
struct Link_Cut_Tree {
int fa[N],las[N],tag[N],hep[N],ch[N][2];
inline void update(int x,int v) {las[x]=tag[x]=v;}
inline int get(int x) {return ch[fa[x]][0]==x||ch[fa[x]][1]==x;}
inline void pushdown(int x) {update(ch[x][0],tag[x]),update(ch[x][1],tag[x]),tag[x]=0;}
inline void rotate(int x) {
int y=fa[x],z=fa[y],k=ch[y][1]==x,v=ch[x][!k];
if(get(y)) ch[z][ch[z][1]==y]=x;ch[x][!k]=y,ch[y][k]=v;
if(v) fa[v]=y;fa[y]=x,fa[x]=z;
}
inline void splay(int x) {
int y=x,tmp=0;
hep[++tmp]=y;
while(get(y)) hep[++tmp]=y=fa[y];
while(tmp) pushdown(hep[tmp--]);
while(get(x)) {
y=fa[x],tmp=fa[y];
if(get(y)) rotate((ch[y][0]==x)^(ch[tmp][0]==y)?x:y);
rotate(x);
}
}
inline void access(int x,int r,int y=0) {
for(;x;x=fa[y=x]) {
splay(x),ch[x][1]=y;
seg.modify(1,1,n,las[x]-sam.len[x]+1,las[x]-sam.len[sam.fa[x]],-1);
}
splay(y),update(y,r),seg.modify(1,1,n,1,r,1);
}
} lct;