强连通分量
文章平均质量分 63
Mint-hexagram
这个作者很懒,什么都没留下…
展开
-
2-SAT问题合集-ybtoj
2-SAT的合集原创 2022-02-24 10:46:23 · 2040 阅读 · 0 评论 -
YBTOJ 软件安装
题面:洛谷传送门题目算法要素:tarjan+树形dp题目分析:一、总体概括可以发现一个环中的点必须同时被选择,因此很容易能想到要tarjan缩点。缩点后形成一张DAG,由于题目的条件,d[i]=0表示一个软件没有另一个软件为前提,因此有一个超级源点0。可以考虑从0点开始,跑一遍树形dp(树上背包),即可得出答案。二(细节一):为什么不能用拓扑dp求解:如果跑一遍拓扑dp,可以得出以每一个点为终点的最大权链,但是各个链中显然有重合的可能性,因此无法直接通过再跑一遍01背包的方式将以每个点为终点的原创 2021-09-17 09:22:35 · 177 阅读 · 0 评论 -
tarjan算法求强连通分量<模板>
dfn[now]表示在now点在dfs搜索树中的dfs序。low[now]表示的是now通过后向边、横叉边能到达的dfn最小的点的dfs序。我们取一个强连通分量中dfn最小的点作为整个强连通分量的代表元素。因此low[now]的实际意义就是now所在的强连通分量的代表元素的点的dfn值。tot表示当前图中强连通分量的数量。col[now]表示now所在的强连通分量的编号,这个数组存在的意义是为了便于缩点时合并信息。stack是手动维护的栈,这里栈的使用非常简单,没有必要使用STL,此外手动维护的原创 2021-09-23 14:32:23 · 160 阅读 · 0 评论 -
YBTOJ最大半连通子图
全篇重点(奇怪的bug):tarjan缩点+topo排序求最长链的常见问题:(1)建新图的时候没有用缩点后生成的新点,而是用原来的点建图(2)建新图的时候注意不要建重复的边,最好用并查集维护两个新点是否被连接过✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧✧具体题目:最大半连通子图:题目算法要素:tarjan缩点&拓扑dp&DAG的神奇性质洛谷传送门分析题目,可以发现,半连通子图要求其中的两个点之间存在原创 2021-09-22 13:48:57 · 95 阅读 · 0 评论