这篇文章是从网络上总结各方经验 以及 自己找的一些例题的算法模板,主要是用于自己的日后的模板总结以后防失忆常看看的, 写的也是自己能看懂即可。 tarjan算法的功能很强大, 可以用来求解强连通分量,缩点,桥,割点,LCA等,日后写到相应的模板题我就会放上来。 1.强连通分量(分量中是任意两点间都可 ...
分类:
编程语言 时间:
2019-04-25 23:57:20
阅读次数:
272
题目: hdu3671 http://acm.hdu.edu.cn/showproblem.php?pid=3671 题意:给一个无向图,要求毁掉两个点,使图变得不连通,图一开始是连通的 因为要毁掉两个点,就不是简单的求割点,再看看数据范围,点数为1000,边数为10000,Tarjan的时间复杂度 ...
分类:
其他好文 时间:
2019-04-17 12:31:44
阅读次数:
132
树上每个割点计算一下各个size的组合相乘再相加为第一问答案,取最大的;再把本答案中最大的两个size相乘减掉,为第二问答案。 C++ const int maxn = 1e4 + 5; int n, size[maxn], ans, b; vector adj[maxn]; void dfs(in ...
分类:
其他好文 时间:
2019-04-08 15:56:26
阅读次数:
136
关于Tarjan算法 梗概 tarjan算法有两种(我了解的),一种是用来求强连通分量的,另一种是关于割点和桥的问题。 根据机房大佬HL说过,这两种算法是互相独立的,只是代码很像。 强连通分量问题 关于这类tarjan算法,我了解到的主要的一个应用就是缩点。 "例题传送门" 思路 首先,如果我们考虑 ...
分类:
其他好文 时间:
2019-03-19 21:37:32
阅读次数:
133
文末有福利。 Tarjan是通过搜索树和压栈完成的,维护两个东西:dfn[i](时间戳)、low[i](通过搜索树外的边i(返祖边),节点能到达的最小节点的时间戳)。 跑完Tarjan,缩点,可以得到DAG图(有向无环图),可以再建图或统计入度出度。 在有向图中,可以找强连通分量SCC(极大强联通子 ...
分类:
其他好文 时间:
2019-03-09 23:59:47
阅读次数:
294
"传送门" 最小割,割点,模板。。。 代码: c++ include include include include include using namespace std; void read(int &x) { char ch; bool ok; for(ok=0,ch=getchar(); ! ...
分类:
其他好文 时间:
2019-03-03 20:56:48
阅读次数:
158
题目链接:http://poj.org/problem?id=1144 描述 一个电话线公司(简称TLC)正在建立一个新的电话线缆网络。他们连接了若干个地点分别从1到N编号。没有两个地点有相同的号码。这些线是双向的并且能使两个地点保持通讯。每个地点的线都终结于电话交换机。每个地点都有一个电话交换机。 ...
分类:
其他好文 时间:
2019-03-03 20:18:45
阅读次数:
393
题目链接 "P3387 【模板】缩点" 解题思路 这几天搞图论,好有趣hhh,多写几篇博客。 上次学$Tarjan$求割点,这次缩点。 思路大概是多一个栈和染色的步骤,每次$Tarjan$的时候把点入栈,如果某个点(比较像割点但不完全是)的$DFS$子树都搜不到它祖宗,那么接下来进行的遍历操作必然与 ...
分类:
其他好文 时间:
2019-02-27 16:15:32
阅读次数:
190
主要的方法都写在注释里面了。 用Tarjan跑出割点,然后DFS搜索所有的联通快 计算每一个联通快中的割点数目 分类讨论: 如果没有割点 至少需要建立两个出口 从任意非割点的地方选择两个点建立 如果这个分组只有一个割点 只需要在分组内设立一个出口 可以设立在任意一个非割点的地方 如果有两个及以上个割 ...
分类:
其他好文 时间:
2019-02-24 13:49:46
阅读次数:
141
这个题是tarjan裸题。最后bfs暴力找联通块就行。(一开始完全写错了竟然得了70分,题意都理解反了。。。这数据强度。。。) 题干: 代码: ...
分类:
其他好文 时间:
2019-02-24 11:04:10
阅读次数:
198