有可能是您的倍增写错了
for(int k=0;fa[u][k];k++)fa[u][k+1]=fa[fa[u][k]][k];
是不行的,因为L操作前,fa数组不一定为零
for(int k=1;k<=16;k++)fa[u][k]=fa[fa[u][k-1]][k-1];
才可以