最近公共祖先。
#include<iostream>
using namespace std;
int jump(
int u,
int step)
{
for (
int k=
0 k<=
20 k++)
if (step&(l<<k)>
0) u:=f[u][k];
return u;
}
int lca(
int u,
int v)
{
if (deep[u])<deep[v]) swap(u,v);
u=jump(u,deep[u]-deep[v]);
for (
int k=
20;k>=
0; k--)
if (f[u][k]!=f[v][k]) u=f[u][k],v=f[v][k];
return u==v?u:fa[u];
}
int main()
{
lca;
}