有向图强连通分量算法,包括Kosaraju算法,Tarjin算法,Gabow算法,本文介绍Kosaraju算法。 Kosaraju算法需要对图进行两遍dfs。 step1:对原图G进行深度优先遍历,记录每个节点的离开时间(后序遍历,将点压栈)。 step2:选择具有最晚离开时间的顶点(出栈),对逆图 ...
分类:
其他好文 时间:
2018-09-15 22:00:22
阅读次数:
163
Kosaraju两次深搜实现强连通分量 kosaraju算法进行两次dfs,第一次在原图上进行,并在结点递归调用返回时将结点压入一个栈中,第二次dfs在原图的逆图上进行,并且初始点选择栈中最上面的点,每次dfs所访问的点构成一个强连通分量。 第一次看kosaraju算法的时候,我很不解,为什么第二次 ...
分类:
其他好文 时间:
2018-08-30 13:43:03
阅读次数:
147
题目: Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 38415 Accepted: 15658 Description Every cow's dream is to become the most ...
分类:
其他好文 时间:
2018-06-24 00:43:36
阅读次数:
167
HDU 1269 评论区居然有人说用并查集过了,其实回想一下 求无向图的连通分量,就是并查集,求有向图的话,就要用到这个算法,或者Kosaraju。 再回想一下,Tarjan确实比较像并查集,我在第一次写的时候就有这种感觉 请看: 这是我在找强连通分量的数量,而在并查集里面,就是: 这样看来,其实, ...
分类:
其他好文 时间:
2018-05-29 12:30:39
阅读次数:
169
1 #include 2 using namespace std; 3 const int maxn=1000; 4 vector g1[maxn],g2[maxn]; 5 stack s; 6 int vis[maxn],sccno[maxn],cnt; 7 void dfs1(int u){ 8... ...
分类:
编程语言 时间:
2018-05-22 19:07:35
阅读次数:
200
1.写了算法课关于有向图的作业。 用c++开辟大数组容易出segment fault,后来改用堆开辟。图的邻接表用了链表表示。 2.关于图的存储,用了邻接链表存储(用链表比vector数组存储速度快多了)。 2.1 边表 2.2 顶点表 2.3 初始化图边时用了头插法 3.深度优先搜索 3.1 递归 ...
分类:
编程语言 时间:
2018-05-06 22:23:21
阅读次数:
140
手动把kosaraju算法实现了,费了好大一番功夫,因为输入数据有60多M啊,简直大成一坨屎了。。。 得到的结论就是,list真的很慢。 看起来应该是同样的算法,用list的话,跑起来没见到停的,不知道会跑多久,我看有人说用python+list跑了8小时都没结束。。。 换成dictionary速度 ...
分类:
其他好文 时间:
2018-02-04 11:15:47
阅读次数:
179
A. Archery Tournament 用线段树套set维护横坐标区间内的所有圆,查询时在$O(\log n)$个set中二分查找即可。 时间复杂度$O(n\log^2n)$。 B. Box 分类讨论。 C. Connections 考虑强连通分量的Kosaraju算法,会发现只有$2(n-1) ...
分类:
其他好文 时间:
2017-12-10 11:14:11
阅读次数:
210
【Algorithms IV】求解强连通分量 Kosaraju算法 Kosaraju算法(也被称为Kosaraju–Sharir算法)是一个在线性时间内寻找一个有向图中的强连通分量的算法。 这个拗口的名字来自他的作者,但是查不到他的生平。应该是个印度人。 求解问题:要求有向图中的强连通分量的个数/划 ...
分类:
编程语言 时间:
2017-11-26 00:40:56
阅读次数:
211
HDU3861 刚刚和妹子打球回来,我喜欢的妹子比我高了10cm,这可怎么办啊。。。。。。刷道题压压惊。 kosaraju缩点+最小路径覆盖 为什么是最小路径覆盖呢,我们假设有一个如下DAG图 目前我们1出发到了3处,对于3的儿子4、5、6,肯定是不能彼此到达的。所以最好的情况3只能延伸一个方向,比 ...
分类:
其他好文 时间:
2017-10-13 21:22:32
阅读次数:
177