题意要求一棵树上,两个点的最近公共祖先 即LCA现学了一下LCA-Tarjan算法,还挺好理解的,这是个离线的算法,先把询问存贮起来,在一遍dfs过程中,找到了对应的询问点,即可输出原理用了并查集和dfs染色,先dfs到底层开始往上回溯,边并查集合并 一边染色,这样只要询问的两个点均被染色了,就可以...
分类:
其他好文 时间:
2014-08-10 15:39:20
阅读次数:
215
题目链接: 点击打开链接
题意:
给定一个有向图,求:
1) 至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点
2) 至少要加多少条边,才能使得从任何一个顶点出发,都能到达全部顶点
顶点数
求完强连通分量后,缩点,计算每个点的入度,出度。
第一问的答案就是入度为零的点的个数,
第二问就是max(n,m) // 入度为零的个数为n, 出度为...
分类:
Web程序 时间:
2014-08-04 18:05:17
阅读次数:
290
hdu1269 迷宫城堡
验证给出的有向图是不是强连通图。。。
Tarjan算法板子题
Tarjan算法的基础是DFS,对于每个节点、每条边都搜索一次,时间复杂度为O(V+E)。
算法步骤:
1、搜索到某一个点时,将该点的Low值标上时间戳,然后将自己作为所在强连通分量的根节点(就是赋值Dfn=Low=time)
2、将该点压入栈。
3、当点p有与点p’相连时...
分类:
其他好文 时间:
2014-08-03 23:22:56
阅读次数:
283
迷宫城堡
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7056 Accepted Submission(s): 3137
Problem Description
为了训练小希的方向感,Gardon建立了一...
分类:
其他好文 时间:
2014-08-03 12:46:35
阅读次数:
281
from byvoid[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected compon...
分类:
其他好文 时间:
2014-08-02 20:47:14
阅读次数:
289
题目链接:http://vjudge.net/problem/viewProblem.action?id=14877题目大意:要尽可能多的烧毁桥,另外还要保证图的连通性,问哪些桥是绝对不能烧毁的我们很容易看出不能烧毁的是必然是作为割边存在的桥。求割边,我们用Tarjan算法,这与求割点有点小区别在与...
分类:
其他好文 时间:
2014-08-01 18:46:02
阅读次数:
217
先上代码:#include #include #include #include using namespace std;int G[1000][1000];int pre[1000],sccno[1000],lowlink[1000]; //sccno[u]:u节点所属于的强连通分量序号...
分类:
其他好文 时间:
2014-07-26 14:21:30
阅读次数:
238
迷宫城堡Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6655Accepted Submission(s): 2973Problem Descri...
分类:
其他好文 时间:
2014-07-12 14:18:30
阅读次数:
184
本题也是找LCA的题目,不过要求多次查询,一般的暴力查询就必然超时了,故此必须使用更高级的方法,这里使用Tarjan算法。
本题处理Tarjan算法,似乎输入处理也挺麻烦的。
注意: 因为查询的数据会极大,故此使用一个数组记录所有查询数据就会超时的。我就载在这里了。查了好久才想到这点。因为我使用了一个vector容器记录了查询数据,故此每次都循环这组这么大的数据,就超时了。----解决办法:使...
分类:
其他好文 时间:
2014-07-09 11:08:22
阅读次数:
224