graph-SCC
2024-09-03 06:34:21
strongly connected component(SCC): 里面的任一对顶点都是互相可达的。
一个有向图,将每个SCC缩成一个点,那么这个图就变成了DAG(有向无环图)。
原图进行DFS之后,使post (u)最大的u点必然在source中.
如果C和C'是两个不同的SCC,一条边从C到C',那么C中post值最大的值一定比C'中最大的要大。
寻找SCC的算法:
1 call DFS (G) to compute finishing times post[u] for each vertex u
2 compute GT // GT 即对G中的边取反后得到的图。取反后,SCC内部仍然是通的,但SCC之间就不再是连通的了。
3 call DFS (GT), but in the main loop of DFS, consider the vertices in order of decreasing post[u]
4 output the vertices of each tree in the depth-first forest formed in step 3 as a SCC
计算GT的时间:O(V+E)
两次DFS的时间:O(V+E)
总时间: O(V+E)
算法实现:
最新文章
- java.net.SocketException: Connection reset
- 开启gpu加速的高性能移动端相框组件!
- php截取字符串函数
- loj 1377 (bfs)
- SQL语言和DML相关操作以及相应的运算符
- 代码静态分析工具--PMD,Findbugs,CheckStyle
- 【转】Android中JNI的使用方法
- BZOJ 2820 YY的GCD(莫比乌斯函数)
- Using Apache Maven
- Application使用示例
- 使用 IDEA 创建 Maven Web 项目 (一)- 使用IEAD创建Maven项目
- unity3d 学习过程记录
- java利用poi生成/读取excel表格
- PL/SQL 记录 Record 简介
- Python集合set
- how2heap学习笔记
- css实现div内一段文本的两端对齐
- 编程实现类似Linux系统的cp功能
- 12.8 Daily Scrum
- hdu5443 ST表裸题:求区间最大