有向图强连通分量的Tarjan算法[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected ...
分类:
其他好文 时间:
2014-07-06 19:10:46
阅读次数:
230
给一个图,问至少添加多少条有向边可以使图变成强连通的。
原图是有环的,缩点建图,在该DAG图上我们可以发现,要使该图变成强连通图必须连成环
而添加最少的边连成环,就是把DAG图上入度为0和出度为0的点连上,那么其他的点就都可以互相到达了
所以答案就是max(入度为0的点,出度为0的点)
#include
#include
#include
#include
#include...
分类:
其他好文 时间:
2014-07-02 10:52:24
阅读次数:
208
首先双连通缩点建立新图(顺带求原图的总的桥数,其实由于原图是一个强连通图,所以桥就等于缩点后的边)
此时得到的图类似树结构,对于新图求一次直径,也就是最长链。
我们新建的边就一定是连接这条最长链的首尾,这样就将原图的桥减少了直径个。
#include
#include
#include
#include
#include
#include
using namespace std;
#...
分类:
其他好文 时间:
2014-06-28 07:18:36
阅读次数:
278
本题分两步:
1 使用Tarjan算法求所有最大子强连通图,并且标志出来
2 然后遍历这些节点看是否有出射的边,没有的顶点所在的子强连通图的所有点,都是解集。
Tarjan算法就是模板算法了。
这里使用一个数组和一个标识号,就可以记录这个顶点是属于哪个子强连通图的了。
然后使用DFS递归搜索所有点及其边,如果有边的另一个顶点不属于本子强连通图,那么就说明有出射的边。
有难度的题目:
...
分类:
其他好文 时间:
2014-06-25 07:19:31
阅读次数:
241
在有向图 G 中,若两个顶点相互可达,则称两个顶点强连通(strongly
connected)。
如果有向图G的每两个顶点都强连通,称G是一个强连通图。
非强连通图有向图的极大强连通子图,称为强连通分量(strongly
connected components)。
比如下面第一幅图
( a, b, e ), ( d, c, h ), ( f, g ) 分别为三个 SCC。...
分类:
其他好文 时间:
2014-06-08 15:24:15
阅读次数:
300
有用+1编辑有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly
connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(...
分类:
其他好文 时间:
2014-05-14 22:40:02
阅读次数:
474
强连通分量有向图中, u可达v不一定意味着v可达u. 相互可达则属于同一个强连通分量(Strongly
Connected Component, SCC)有向图和它的转置的强连通分量相同所有SCC构成一个DAG 1、强连通图。...
分类:
其他好文 时间:
2014-05-14 22:34:47
阅读次数:
585
http://acm.hdu.edu.cn/showproblem.php?pid=4635问:最多加多少条边,使得原图不是强连通图正向考虑有困难,不妨反向思考,既最少去掉几条边使得原图不是强连通。总边数sum=n*(n-1)时肯定是强连通,已经给了m条边,sum-=m这时把已经强连通的部分进行缩点...
分类:
其他好文 时间:
2014-05-14 13:37:36
阅读次数:
335