割点是无向图中去掉后能把图割开的点。dfs时用dfn(u)记录u的访问时间,用low(u)数组记录u和u的子孙能追溯到的最早的节点(dfn值最小)。由于无向图的dfs只有回边和树边,且以第一次dfs时的方向作为边的方向,故有: low=min{ dfn(u), dfn(v),若(u,v)为回边(非....
分类:
其他好文 时间:
2014-09-16 20:31:50
阅读次数:
175
题意:
给定一个有向图,求有多少个顶点是由任何顶点出发都可达的。
顶点数
定理:
有向无环图中唯一出度为0的点,一定可以由任何点出发均可达
(由于无环,所以从任何点出发往前走,必然终止于一个出度为0的点)
1. 求出所有强连通分量
2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。
3. DAG上面如果有唯一的出度为0的点,则该点能被所有的点可达。那么该...
分类:
其他好文 时间:
2014-09-15 21:19:19
阅读次数:
253
此算法以有向图作为输入,并按照所在的强连通分量给出其顶点集的一个划分。graph中的每个节点只在一个强连通分量里出现,即使是单点。
任选一点开始进行深度优先搜索(若dfs结束后仍有未访问的节点,则再从中任选一点再从进行)。搜索过程中已访问的节点不再访问。搜索树的若干子树构成了图的强连通分量。
节点按照被访问的顺序存入栈中。从搜索树的子树返回至一个节点时,检查该节点是否是某一...
分类:
其他好文 时间:
2014-09-15 17:56:19
阅读次数:
253
就是看是否有一些点,从其他任何点出发都可到达定理:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达。所以缩点,若出度为零的点(强联通分量)唯一,则答案为该强联通分量中点的度数。若不唯一,答案为0,易证。Code(懒得Tarjan,用了两次DFS): 1 #include 2 #include...
分类:
移动开发 时间:
2014-09-09 19:52:19
阅读次数:
259
题目大意:给定一棵无根树和一个序列,在这个序列上依次遍历,求每个点的访问次数(最后一个点的访问次数要-1)
树链剖分的裸题……考场上我还是一个弱渣,啥也不会,暴力得了50分,剩下两道题爆零了。。。而且30W深搜爆栈,人生第一次手写了系统栈。。
回来因为这题的原因去学了树链剖分 结果没学明白 每条重链单独开了一棵线段树 常数大的要死
高一时写的代码。。。还是别看了,拿去对拍可以,阅读性欠佳
...
分类:
其他好文 时间:
2014-09-07 16:04:57
阅读次数:
591
简要题解: 意在判断哪些点在一个图的 奇环的双连通分量内。 tarjan求出所有的点双连通分量,再用二分图染色判断每个双连通分量是否形成了奇环,记录哪些点出现在内奇环内 输出没有在奇环内的点的数目coder/* 求有向图的点双连通分支tarjan算法 ...
分类:
其他好文 时间:
2014-09-05 21:01:51
阅读次数:
274
PS:在贴出代码之前,我得说明内容来源——哈尔滨工业大学出版的《图论及应用》。虽然有一些错误的地方,但是不得不说是初学者该用的书。 从效率的角度来说,Kosaraju 0;i--) if(!vis[dfn[i]]) { cnt=0; ...
分类:
其他好文 时间:
2014-09-04 18:50:29
阅读次数:
254
tarjan---LCA算法的步骤是(当dfs到节点u时): 实际: 并查集+dfs具体步骤: 1 在并查集中建立仅有u的集合,设置该集合的祖先为u 1 对u的每个孩子v: 1.1 tarjan之 1.2 合并v到父节点u的集合,确保集合的祖先是u 2 设置u为已遍历 3 处理关于u的查询,若查.....
分类:
其他好文 时间:
2014-09-04 16:54:09
阅读次数:
231
1051: [HAOI2006]受欢迎的牛Time Limit:10 SecMemory Limit:162 MBSubmit:2092Solved:1096[Submit][Status]Description每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认...
分类:
其他好文 时间:
2014-09-02 19:46:45
阅读次数:
269
唉= =这道题我都想到了tarjan缩点,但是没有想到最后一步啊= =我们很容易想到反向建边然后缩点,这时候我们看由多少个联通块的入度为0,如果为1个,那就输出这个块的大小,否则输出0;#include #include #include #include using namespace std;c...
分类:
其他好文 时间:
2014-09-01 21:08:43
阅读次数:
278