int lca(int u, int v) {
if (d[u] < d[v]) swap(u, v);
for (int i = 20; i >= 0; i--)
if (d[f[u][i]] >= d[v])
u = f[u][i];
if (u == v) return u;
for (int i = 20; i >= 0; i--)
if (f[u][i] != f[v][i]) { u = f[u][i]; v = f[v][i]; }
return f[u][0];
}
如题,请问如何证明在倍增多次后循环终止时的 a,b 的父亲一定是 LCA(a,b) ?