题意:
给你一棵树,这棵树上任意边长已知,问你这棵树上任意两个点之间的距离,询问的次数很多,所以每次查询都深搜会超时。
思路:
以任意结点为根,用LCA的经典算法求出所有查询的两个结点的最近公共祖先,dfs求出任意一点到根结点的距离,则两个结点到最近公共祖先的距离可之和即为所求。
下面写的是用Tarjan算法求LCA的实现
本文介绍了一种使用Tarjan算法优化树结构中两点间距离查询的方法。通过预处理树的结构,利用最近公共祖先(LCA)算法减少查询时间,特别适用于大量查询场景。
题意:
给你一棵树,这棵树上任意边长已知,问你这棵树上任意两个点之间的距离,询问的次数很多,所以每次查询都深搜会超时。
思路:
以任意结点为根,用LCA的经典算法求出所有查询的两个结点的最近公共祖先,dfs求出任意一点到根结点的距离,则两个结点到最近公共祖先的距离可之和即为所求。
下面写的是用Tarjan算法求LCA的实现
261

被折叠的 条评论
为什么被折叠?