1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 const int N(100000+15); 8 int n,m,u,v; 9 int head[N],sumedge; 10 struct Edge 11 { 12 int... ...
分类:
其他好文 时间:
2017-05-20 12:27:16
阅读次数:
191
题目链接:http://poj.org/problem?id=2117 题意:求删除一个点后,图中最多有多少个连通块。 题解:就是找一下割点,根节点的割点删掉后增加son-1(son为子树个数),非根节点删掉之后++ ...
分类:
其他好文 时间:
2017-05-20 11:13:55
阅读次数:
221
求割点 DFS搜索树:用DFS对图进行遍历时,按照遍历次序的不同,我们可以得到一棵DFS搜索树。 树边:(称为父子边),可理解为在DFS过程中访问未访问节点时所经过的边。 回边:(返祖边、后向边),可理解为在DFS过程中遇到已访问节点时所经过的边。 该算法是R.Tarjan发明的。观察DFS搜索树, ...
分类:
移动开发 时间:
2017-05-19 22:18:24
阅读次数:
260
题目链接:https://vjudge.net/contest/67418#problem/B 题意:给一个无向连通图,求出割点的数量。首先输入一个N(多实例,0结束),下面有不超过N行的数,每行的第一个数字代表后面的都和它存在边,0表示行输入的结束。 题解:简单的求割点模版,所谓割点就是去掉这一个 ...
分类:
Web程序 时间:
2017-05-19 21:07:56
阅读次数:
231
题目链接:http://poj.org/problem?id=1236 题意:给出n个学校和一些学校之间的网络链接关系,学校之间的网络是单向边,让你求出两个问题的答案,1.至少需要多少份软件,使得所有学校都可以收到。2.如果希望用一份软件就能够使所有学校收到需要添加几条边 题解:首先求强连通分量然后 ...
分类:
Web程序 时间:
2017-05-18 22:07:31
阅读次数:
217
Family Name List Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 882 Accepted Submission(s): 271 ...
分类:
其他好文 时间:
2017-05-16 10:02:50
阅读次数:
212
传送门 题意 N个点M条边的有向图 每个点有点权 从某一个结点出发 问能获得的最大点权和 一个点的点权最多被计算一次 N<=500000 M<=500000 思路 先tarjan缩点,然后就形成一个dag,无环,所以直接spfa求最长路就行。 也可以先缩点,然后拓扑排序 + dp 搞。 代码 1 # ...
tarjian算法 LCA: LCA(Least Common Ancestor),顾名思义,是指在一棵树中,距离两个点最近的两者的公共节点。也就是说,在两个点通往根的道路上,肯定会有公共的节点,我们就是要求找到公共的节点中,深度尽量深的点。还可以表示成另一种说法,就是如果把树看成是一个图,这找到这 ...
分类:
编程语言 时间:
2017-05-14 16:07:23
阅读次数:
161
寻找一个迷宫是否是仅仅有一个最大强连通图。 使用Tarjan算法去求解,经典算法。必需要学习好,要自己创造出来是十分困难的了。 參考资料:https://www.byvoid.com/blog/scc-tarjan/ const int N = 10001; vector<int> gra[N]; ...
分类:
其他好文 时间:
2017-05-13 13:32:23
阅读次数:
124
题目链接 题意:给你一个连通图。然后再给你n个询问,每一个询问给一个点u,v表示加上u,v之后又多少个桥。 思路:用Tarjan缩点后,形成一棵树,所以树边都是桥了。然后增加边以后,查询LCA,LCA上的桥都减掉。 代码: #include <iostream> #include <cstdio> ...
分类:
Web程序 时间:
2017-05-10 15:38:13
阅读次数:
189