d.看一个图是不是强连通图s.求出强连通分量,看看有没有一个强连通分量包含所有点。c.Tarjan/*Tarjan算法复杂度O(N+M)*/#include#include#includeusing namespace std;const int MAXN=10010;//点数const int M...
分类:
其他好文 时间:
2015-12-04 20:22:02
阅读次数:
132
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