1、Tarjan/*Tarjan算法复杂度O(N+M)*/#include#include#includeusing namespace std;const int MAXN=20010;//点数const int MAXM=50010;//边数struct Edge{ int to,next...
分类:
其他好文 时间:
2015-11-28 19:52:31
阅读次数:
201
原文地址:有向图强连通分量的Tarjan算法[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly conne...
分类:
编程语言 时间:
2015-11-28 18:13:58
阅读次数:
309
1、一颗树中,给出a,b,求最近的距离。(我没考虑不联通的情况,即不是一颗树的情况)2、用最近公共祖先来求,记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - 2 * dis[lca(u, v)]3、/*离线算法,LCATarjan复杂度O(n+Q);*/#in...
分类:
编程语言 时间:
2015-11-14 01:04:19
阅读次数:
269
1、给定一棵树,每条边都有一定的权值,q次询问,每次询问某两点间的距离。2、这样就可以用LCA来解,首先找到u, v 两点的lca,然后计算一下距离值就可以了。这里的计算方法是,记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - 2 * dis[lca(u, v...
分类:
编程语言 时间:
2015-11-14 01:00:37
阅读次数:
280
1、输出测试用例中是最近公共祖先的节点,以及这个节点作为最近公共祖先的次数。2、最近公共祖先,离线Tarjan算法3、/*POJ 1470给出一颗有向树,Q个查询输出查询结果中每个点出现次数*//*离线算法,LCATarjan复杂度O(n+Q);*/#include#include#includeu...
分类:
编程语言 时间:
2015-11-13 20:56:54
阅读次数:
329
[有向图强连通分量]在有向图G中,如果两个 顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,...
分类:
编程语言 时间:
2015-11-13 20:48:49
阅读次数:
320
把集合A[i]看作i点的前驱点集合,建成一个DAG,并新建超级源S,向每个前驱集合为空的点连边,那么B[i]就是S到i的必经点集合。首先使用Lengauer-Tarjan算法建立出以S为起点的Dominator Tree,那么B[i]就是i在树上的所有祖先。对于一个询问,构造出虚树,然后统计虚树上每...
分类:
其他好文 时间:
2015-10-07 06:18:35
阅读次数:
231
LCA 最近公共祖先 Tarjan的基本想法和做法
分类:
编程语言 时间:
2015-10-04 18:24:08
阅读次数:
1647
lca就好了,不难理解hdu1269:模板题--------------------------------------------------------------------------------------------------------------------------------...
分类:
编程语言 时间:
2015-10-01 19:14:35
阅读次数:
164
对于一个无向图,如果一个点集,它内部的任意一个点对之间,至少有两条点完全不重复的路径,那么这个点集就是原图的一个点双连通分量,而点双联通分量之间是由割点隔开,割点就是如果删去这个点,原图的连通块数会增加,那么这个点就是割点。通过tarjan算法,我们可以用一次 dfs 标记出所有的割点以及所有双连通...
分类:
其他好文 时间:
2015-09-26 00:31:45
阅读次数:
248