这里有个讲解非常明白,虽然没证明。点击打开链接 还有个数据结构的学习 点击打开链接 伸展树/Treap/划分树/ 归并树
步骤:
tarjan算法的步骤是(当dfs到节点u时):
1 在并查集中建立仅有u的集合,设置该集合的祖先为u
1 对u的每个孩子v:
1.1 tarjan之
1.2 合并v到父节点u的集合,确保集合的祖先是u
2 设置u为已遍历
3 处理关于u的查询,若查询(u,v)中的v已遍历过,则LCA(u,v)=v所在的集合的祖先
#include
#include
#include
#include
#include
#include
#include
#include