题意:
给你一棵树,这棵树上任意边长已知,问你这棵树上任意两个点之间的距离,询问的次数很多,所以每次查询都深搜会超时。
思路:
以任意结点为根,用LCA的经典算法求出所有查询的两个结点的最近公共祖先,dfs求出任意一点到根结点的距离,则两个结点到最近公共祖先的距离可之和即为所求。
下面写的是用Tarjan算法求LCA的实现
题意:
给你一棵树,这棵树上任意边长已知,问你这棵树上任意两个点之间的距离,询问的次数很多,所以每次查询都深搜会超时。
思路:
以任意结点为根,用LCA的经典算法求出所有查询的两个结点的最近公共祖先,dfs求出任意一点到根结点的距离,则两个结点到最近公共祖先的距离可之和即为所求。
下面写的是用Tarjan算法求LCA的实现