如果我lca的f[u][i]初始化这么写就会WA:
void init(int u)
{
dep[u]=dep[f[u][0]]+1;
for(int i=1;i<M;i++)f[u][i]=f[f[u][i-1]][i-1];
for(int i=0;i<e[u].size();i++)
init(e[u][i]);
}
但我将f[u][i]的初始化放在主函数中用循环来初始化就能AC了:
int main()
{
...
for(int i=1;i<M;i++)
for(int j=1;j<=n;j++)
f[j][i]=f[f[j][i-1]][i-1];
...
}
请问这是什么原因?