The article is to Jimmy.(方老师讲过了还不会,想怎样???) 求一棵树上两个节点的最近公共祖先有两种算法: (离线); 倍增(在线). 这篇博客只介绍倍增的写法. 表示节点的祖先中,与节点距离为的节点编号. 那么 每次查询两个节点的时,现将深度深的点向上移,直到两个点的深度一样. 接下来就重复此工作,直到存在: 找到最小的使得,如果,则令. (这样的话能保证找到,因为为公共祖先,不是公共祖先,那么会在到的路径上,所以需要退一级寻找.) #include<cmath> #…