LCA的一种优秀实现方式(倍增+dfs序)

int ask(int u, int v)
{
	if (dfn[u] > dfn[v]) swap(u, v);
	if (u == v) return u;
	for (register int i = t; i >= 0; i -- )
		if (dfn[fa[v][i]] > dfn[u])
			v = fa[v][i];
	return fa[v][0];
}
原文地址:https://www.cnblogs.com/andysj/p/13893587.html