时间复杂度 O(n+m) dfs 求解。 定义 dfn[n]为n当前的时间戳,low[n]为n最早能追溯到的时间戳,可知 若回溯时 dfn[n]==low[n],即找到了一个强连通分量。如图 注意一个点也会被看做强连通分量。 若有环套环的情况,tarjan求的是最大的那个。 另外判断Instack是 ...
分类:
其他好文 时间:
2017-11-07 19:55:23
阅读次数:
165
在学习无向图的强联通分量之前 你首先要明白有向图的强联通分量 定义 对于任意两个点,如果存在至少两条互相不重合的路径,使得这两点可以相互到达,那么这两个点就属于同一个强联通分量 比如说 在这张图中, $1,2,3$属于一个强联通分量 $4$属于一个强联通分量,因为$3,4$只有一条可以相互到达的路径 ...
分类:
其他好文 时间:
2017-11-07 19:45:17
阅读次数:
186
备忘:要学前向星 过大的数据赋值的时候要加LL 割边割点强连通分量的寻找方式都是建立树,找返祖边,比较dfn[i](该点在树上的位置)和low[i](能访问到的最前位置). 复习的时候不要看书上的割点割边.... ...
分类:
其他好文 时间:
2017-11-04 18:11:31
阅读次数:
114
一.题目类型: 1.有向图的强连通分量: POJ1236 Network of Schools HDU1269 迷宫城堡 2.割点 & 割边: UESTC - 900 方老师炸弹 UVA315 Network UVA796 Critical Links HDU3394 Railway 3.无向图的边 ...
分类:
编程语言 时间:
2017-11-04 17:57:32
阅读次数:
209
以下摘自SHHHS Tarjan 算法 一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度。 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称 ...
分类:
编程语言 时间:
2017-11-04 14:56:17
阅读次数:
234
在这题上不是标准的“a或b”这样的语句,因此需要进行一些转化来进行建边。同时在这题上点数较多,用lrj大白书上的做法会T,因此采用求强连通分量的方法来求解(对一个点,如果其拓扑序大于其为真的那个点,则这个语句为真,都相同则无解,否则为假)。AC代码如下: ...
分类:
其他好文 时间:
2017-11-02 14:38:56
阅读次数:
175
题目:BZOJ1051、洛谷P2341。 题目大意:给你一张有向图,问有多少个点能从其他任意点到达。 解题思路:首先求强连通分量,缩点。 然后就变成有向无环图上的问题了。 这里有一个巧妙的思路:找出度为0的点。 由于是有向无环图,任意一个能从其他点到达的点出度一定是0,否则就会有环。 而这样的点最多 ...
分类:
其他好文 时间:
2017-11-01 14:56:02
阅读次数:
169
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 int n,m; 6 const int maxn=1e5+2; 7 const int maxm=2*maxn; 8 struct nodeg ...
分类:
其他好文 时间:
2017-11-01 01:05:40
阅读次数:
205
题目大意: 给一个有向图 求一个最大的强连通分量,输出这个强连通分量里的所有元素 若两个联通分量内点数相同 则输出字典序小的那个 思路: 直接tarjan 对每个连通分量,求一下最小点,然后判断字典序就行了 1 #include<iostream> 2 #include<cstdio> 3 #inc ...
分类:
其他好文 时间:
2017-10-30 18:17:25
阅读次数:
169
强连通分量总结 概念 来自百度 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图 如果有向图G的每两 ...
分类:
其他好文 时间:
2017-10-29 18:41:41
阅读次数:
158