不管您写的是树剖还是LCA,请使用bfs
数据中有一条巨大长臭链,dfs会爆栈
void bfs(ll now,ll fa){
queue<ll>s;
dep[now]=1,f[now][0]=fa;
s.push(now);
while(!s.empty()){
now=s.front();
s.pop();
for(int i=from[now];i;i=net[i]) {
if(to[i]!=f[now][0]) {
s.push(to[i]),f[to[i]][0]=now;
dep[to[i]]=dep[now]+1;
}
}
}
}