求无向图的关节点dfn[]来存点的深度数在一张深度优先搜索树中,如果u和v是两个顶点,且生成树中u是v的祖先,则必有dfn[u]2,1->3,2->3中,dfs时1->2->3,这里dfs树中的边为1->2,2->3,那么1->3就是回边;(1)如果点u是dfs生成树的根,那么u至少有2个子女。理由...
分类:
编程语言 时间:
2015-06-03 23:09:07
阅读次数:
492
部分转自[有向图强连通分量]有向图中,如果一个子图内任意两点都可达这这个子图为强连通子图如图所示{1, 2,3,4},{5},{6} 为一个强连通子图求连通分量1.用Kosaraju算法(PS:个人感觉Kosaraju算法比较好理解,但是适用范围不如Tarjan算法广)如果在原图中点 i 可达 点 ...
分类:
其他好文 时间:
2015-05-23 22:33:34
阅读次数:
294
求强联通分量的tarjan算法应用实例 边双连通分支
分类:
其他好文 时间:
2015-05-20 18:19:54
阅读次数:
113
Tarjan算法适用于离线批量处理多个查询请求。基本思想是以深度优先搜索的顺序访问这颗树,给这棵树的结点染色,一开始所有结点都是白色的,而当第一次经过某个结点的时候,将它染成灰色,而当第二次经过这个结点的时候——也就是离开这棵子树的时候,将它染成黑色。...
分类:
编程语言 时间:
2015-05-19 14:54:36
阅读次数:
169
[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子...
分类:
编程语言 时间:
2015-05-12 13:14:49
阅读次数:
155
题意:有n个学校,学校之间可以传递信息,为单向传递。
问题一:至少要向几个学校传递原始信息,才能保证所有学校都能收到信息。
问题二:至少要添加多少组关系(每组关系类型如右:a 可以 向 b 传递信息),才能保证 给任意一个学校原始信息后,其他所有学校都能收到信息。
思路:这道题其实就是一个有n个顶点的有向图,先用 Tarjan 算法缩点 , 然后分别统计出 入度为0 和 出度为0 的强连通分量个数 num1 和 num2,那么, 问题一的答案就是 num1 , 问题二的答案就是 max(num1 , nu...
分类:
Web程序 时间:
2015-05-10 09:50:36
阅读次数:
121
题意:给定一个无向图,分别求出不在任何环中的边的数量和同时在两个或以上的环中的边的数量。
解法:桥上的边就是不在任何环中的。而如果一个点双连通分量中边的数量比点的数量要多,那么该双连通分量的所有边都同时在两个或以上的环中(这个可以想象一下,在一个简单环中多加一条端点不同的边,这样简单环就会被分割成两个小的简单环,任何一条在大的环中的边都会同时处于一个其中一个小的环中)。
在tarjan算法中,...
分类:
其他好文 时间:
2015-05-03 09:23:49
阅读次数:
119
最近做到一道题目,大概的意思就是求一个多叉树中两个节点的最近公共祖先,输入是用邻接矩阵表示的。要想理解tarjan算法并实现它,需要先理解一下内容:1) 深度优先搜索;tarjan算法核心思想:当某节点刚刚搜索完毕时,看与其相关的结点v是否已经被访问,如果v已经被访问过了,则它们的最近公共祖先就是v...
分类:
编程语言 时间:
2015-04-26 15:12:34
阅读次数:
138
分析:首先求强连通分量的个数,然后进行缩点,最后求出最终答案。
1、求强连通分量的个数使用tarjan算法。
2、缩点为另外一个图,通过tarjan算法求出的结果进行。缩点后的图中求出每个点的入度。
3、求出每个强连通分量中的最小花费。
4、根据缩点后图的入度求出最终结果。
#include
#include
#include
using namespace std;
vect...
分类:
编程语言 时间:
2015-04-25 15:12:01
阅读次数:
182