标签:深度 pop stk 学习 笔记 LCA push 虚树
虚树是用来解决树上的一些特定点问题的好方法。建立虚树的本质是缩二度点。具体来讲是这样的:
维护一个栈,表示虚树的最右链。栈从顶到底深度递减。一开始先 push 进根,方便操作。下面定义 stk[x] 为从栈顶向下数的第 x 个元素。
当加入一个点的时候,执行下述操作:
-
若栈只有根元素,那直接 push 进栈,return. 否则求出当前点和栈顶的 LCA.
-
若
stk[2]
的深度比LCA
大,则 \(pop\) 掉stk[1]
并连边stk[2]
,重复该过程使得stk[2]
的深度小于等于LCA
. -
现在
stk[1]
和 LCA 的关系是不确定的。假如stk[1]
比LCA
深,那需要 addedge 之后 pop 掉。 -
假如
stk[1]
不是 LCA,需要将 LCA 入栈。 -
原来需要加入的点入栈。
标签:深度,pop,stk,学习,笔记,LCA,push,虚树 来源: https://www.cnblogs.com/LiM-233/p/14842776.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。