在有向图中,若两点至少包含一条路径可以到达,则称两个顶点强连通,若任意两个顶点皆如此,则称此图为强联通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 中间查找过程类似于深度优先搜索和并查集。 代码实现: ...
分类:
编程语言 时间:
2017-10-01 16:59:19
阅读次数:
241
模板强连通分量,强连通Tarjan 可以直接过,只是题目多了需要字典序比较并输出的需要。然而我偷懒想用String 储存所有计算出的强连通分量,然后sort 一遍输出,结果是提交了三次都是错的。看到别处题解的字典序求法,然后就改对了。 1 #include<algorithm> 2 #include ...
分类:
其他好文 时间:
2017-09-29 00:19:00
阅读次数:
169
#include #include #include #include #define ALL(v) v.begin(),v.end() using namespace std; int t[100005],lowlink[100005],step; vector mp[100005]; bool ... ...
分类:
其他好文 时间:
2017-09-28 11:39:14
阅读次数:
125
n<=100000个点m<=100000条边有向图,有一次机会沿着某条边反方向走一次,求从一号点出发最终到达一号点的路径经过的不同的点的数量的最大值。 tarjan缩完点,如果没机会反方向的话答案就是1所在的分量的大小。现在有了,其实就是1->1能到达的某个点->反向边->能到达1的某个点,所以只要 ...
分类:
其他好文 时间:
2017-09-28 10:07:41
阅读次数:
169
之前一直用的是tarjan第一次学习到这个来试一下。 唔,就是裸的算法,然后如果出度为0的点只有一个,输出这个点的大小。 ...
分类:
编程语言 时间:
2017-09-26 22:25:39
阅读次数:
205
1 #include 2 #include 3 #define MN 300000 4 using namespace std; 5 int n,m,w[MN],cnt,h[MN],q[MN]; 6 int s[MN],t[MN],fa[MN],dis[MN],a[MN]; 7 bool vis[M... ...
分类:
其他好文 时间:
2017-09-26 16:07:02
阅读次数:
177
理解 在有向图G中,如果两点互相可达,则称这两个点强连通,如果G中任意两点互相可达,则称G是强连通图。 定理: 1、一个有向图是强连通的,当且仅当G中有一个回路,它至少包含每个节点一次。 2、非强连通有向图的极大强连通子图,称为强连通分量(SCC即Strongly Connected Compone ...
分类:
其他好文 时间:
2017-09-26 11:12:25
阅读次数:
259
话说昨天练习的时候,有一道题是要求强连通分量预处理的。然而那时我还不知道tarjan算法为何物,于是糊出了如下求强连通分量的算法。(时间复杂度O(n*logn)) 于是用这个算法写了那道题,居然AC了。(那题还要求单源最短路,卡不掉我的O(n*logn)预处理2333) (注:这个辣鸡算法就是用并查 ...
分类:
编程语言 时间:
2017-09-24 20:20:05
阅读次数:
221
Tarjan缩图,处理点双,然后简单DP(日常炸Tarjan系列) ...
分类:
其他好文 时间:
2017-09-23 21:22:02
阅读次数:
187
今天整个晚自习又基本迷到tarjan里去了(现在还没搞清楚遍历,更新的次序,于是就还没写tarjan算法),看来图论的部分可能这一周能进行完就不错了(不过我每次都高估我自己)。今天有些匆忙,回宿舍还有一堆作业(看来今晚就不用睡了。。。还怎么没看过乌鲁木齐的日出呢。。。)。物理开始了磁场的新章节,虽然 ...
分类:
其他好文 时间:
2017-09-22 01:02:42
阅读次数:
233