关于 LCA 的倍增算法
  • 板块学术版
  • 楼主wwhOvO
  • 当前回复3
  • 已保存回复3
  • 发布时间2020/12/20 20:07
  • 上次更新2023/11/5 05:51:51
查看原帖
关于 LCA 的倍增算法
204619
wwhOvO楼主2020/12/20 20:07
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,ba,b 的父亲一定是 LCA(a,b)\text{LCA}(a,b)

2020/12/20 20:07
加载中...