树上 Kth father
来源于 https://vjudge.net/problem/CodeForces-291E
void init(int x,int fa){ val[x]=val[fa]*S+(ul)c[x]; f[x][0]= fa; for (int i=1;i<20;++i) f[x][i]=f[f[x][i-1]][i-1]; for (int y: g[x]) init(y,x); } int find(int x,int k){ for (int i=0;i<20;++i) if ((k>>i)&1) x=f[x][i]; return x; }