摘要: 第一题就LCA即可。不过推荐用Tarjan(最快,常数很小)。然后Tarjan的时候顺便就出一个dist[i],表示i节点到根节点的距离。求出了LCA,那么两点间的距离就为dist[u] + dist[v] - 2 * dist[lca]。 Code 1 #include<iostream> 2 # 阅读全文
posted @ 2017-01-22 21:57 阿波罗2003 阅读(191) 评论(1) 推荐(0) 编辑
摘要: 1#树上倍增 以前写的博客:http://www.cnblogs.com/yyf0309/p/5972701.html 预处理时间复杂度O(nlog2n),查询O(log2n),也不算难写。 2#st表(RMQ) 首先对一棵树进行dfs,得到欧拉序列,记录下每个节点的第一次出现位置。 (先序遍历这棵 阅读全文
posted @ 2017-01-22 21:37 阿波罗2003 阅读(385) 评论(0) 推荐(1) 编辑