![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
割点_割边_强连通分量
文章平均质量分 86
成诚tbf
这个作者很懒,什么都没留下…
展开
-
POJ1523_SPF_求割点与分块_tarjan算法
题意: 给一个无向图,求其中的割点,并求当此割点删掉后图中形成多少个连通分量 题解: 用tarjan求割点:伪代码 求割点的方法就用上面的,d[u]和low[u]的含义是: d[u],dfs到结点u时的时间 low[u],由u在搜索树中的子节点通过非父子边可以追溯到的最早的结点开始的时间 时间:每调用一次dfs函数,时间增加1 原理我就不啰嗦了,看看tarjan算法的证明和实现原创 2013-07-17 20:24:00 · 786 阅读 · 0 评论 -
POJ2117_Electricity_求删除割点后最大连通分支的个数_tarjan
题意: 给一个图,给图中结点的连接关系(但图本身就有可能有多个连通分支),让你求删掉一个点后,图中剩余的连通分支的个数最大是多少 题解: 在每个连通分支中找割点,并计算割点对应的可以增加的最大块数,然后加上原来的图中连通分支个数就是答案 不过要注意有可能没有割点,这时候就是直接输出连通分支个数就行 另外有可能没有边,这时候删掉任意一点得到的连通分支数为n-1 代码中注释原创 2013-07-18 10:44:01 · 733 阅读 · 0 评论 -
POJ3177_Redundant_Paths_边双连通分量_tarjan
题意: 给一个图,问你最少添加多少条边可以成为一个双连通图(就是去掉任何一条边后图仍然连通) 题解:【摘自北大的集训课件】 只需在求出所有的桥以后,把桥边删除,原图变成了多个连通块,则每个连通块就是一个边双连通分支。桥不属于任何一个边双连通分支,其余的边和每个顶点都属于且只属于一个边双连通分支。 可以求出所有的桥,把桥删掉。然后把所有的连通分支求出来,显然这些连通分支就是原图中的双连通分支原创 2013-07-18 20:16:41 · 549 阅读 · 0 评论 -
POJ2186_Popular cows_强连通分量_Korasaju算法
题意: 给一个有向图,找一些点,使得从所有点出发都可以到达这些点 题解: 定理:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达(由于无环,所以从任何点出发往前走,必然终止于一个出度为0的点) 1. 求出所有强连通分量 2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。 3. DAG上面如果有唯一的出度为0的点,则该点能被所有的点可达。那么该点所代表的连通分量上的所有的原创 2013-07-20 10:49:24 · 626 阅读 · 0 评论 -
POJ1236_Network of Schools_强连通分量_Korasaju算法
题意: 给一个有向图,task_A:选最少的点使之可以遍历整个图 task_B:添加最少的边使图成为强连通图 题解: A: 有向无环图中所有入度不为0的点,一定可以由某个入度为0的点出发可达。(由于无环,所以从任何入度不为0的点往回走,必然终止于一个入度为0的点) 1. 求出所有强连通分量 2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。 3. DAG原创 2013-07-21 09:22:03 · 752 阅读 · 0 评论 -
UVA11324_The Largest Clique_tarjan求强连通分量+DP求最长路
题意: 给一个图,求它的一个最大子图,使得图中任意两点之间都至少有一条路径【注意是两点之间有路径,而不是可以到达任意一点,所以不是强连通分量】 【PS:题中给的传递闭包其实是个迷惑,没有用,因为在原图上做,和在传递闭包的图上做是完全一样的】 题解: 先求出图中的所有强连通分量,将每个分量缩为一点使之成为一个DAG图,这样在这个无环图中,找子图使得满足条件 关键: 把问题“使得子原创 2013-07-21 22:19:27 · 722 阅读 · 0 评论