求强连通分量模板(tarjan算法)
关于如何求强连通分量的知识请戳 https://www.byvoid.com/blog/scc-tarjan/
void DFS(int x)
{
dfn[x]=lowlink[x]=++dfn_clock;
stac.push_back(x);
for(int i=; i<g[x].size(); i++) //与x相连的个点
{
int t=g[x][i];
if(!dfn[x]) //未访问过
{
DFS(t);
lowlink[x]=min(lowlink[x],lowlink[t]);
}
else if(!sccno[t]) //点t已经访问过,但还不属于任何scc
lowlink[x]=min(lowlink[x],dfn[t]);
}
if(lowlink[x]==dfn[x]) //下面的点最多只能连到自己
{
scc_cnt++;
while(true)
{
int r=stac.top();
stac.pop();
sccno[r]=scc_cnt;
if(x==r) break; //回到自己
}
}
} void find_scc(int n)
{
dfn_clock = scc_cnt = ; //计数器,强连通分量的个数
memset(sccno,,sizeof(sccno));
memset(dfn,,sizeof(dfn));
memset(lowlink,,sizeof(lowlink)); for(int i=; i<=n; i++)
{
if(!dfn[i]) //多个连通图时这样做
DFS(i);
}
}
模板代码(带注释)
求强连通分量模板(tarjan算法)的更多相关文章
- poj1236 Network of Schools ,有向图求强连通分量(Tarjan算法),缩点
		
题目链接: 点击打开链接 题意: 给定一个有向图,求: 1) 至少要选几个顶点.才干做到从这些顶点出发,能够到达所有顶点 2) 至少要加多少条边.才干使得从不论什么一个顶点出发,都能到达所有顶点 ...
 - 有向图强连通分量的Tarjan算法
		
有向图强连通分量的Tarjan算法 [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G ...
 - 【转】有向图强连通分量的Tarjan算法
		
原文地址:https://www.byvoid.com/blog/scc-tarjan/ [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly con ...
 - 【转载】有向图强连通分量的Tarjan算法
		
转载地址:https://www.byvoid.com/blog/scc-tarjan [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly conn ...
 - 有向图强连通分量的Tarjan算法(转)
		
[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...
 - 强连通分量的Tarjan算法
		
资料参考 Tarjan算法寻找有向图的强连通分量 基于强联通的tarjan算法详解 有向图强连通分量的Tarjan算法 处理SCC(强连通分量问题)的Tarjan算法 强连通分量的三种算法分析 Tar ...
 - 算法笔记_144:有向图强连通分量的Tarjan算法(Java)
		
目录 1 问题描述 2 解决方案 1 问题描述 引用自百度百科: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连 ...
 - 『图论』有向图强连通分量的Tarjan算法
		
在图论中,一个有向图被成为是强连通的(strongly connected)当且仅当每一对不相同结点u和v间既存在从u到v的路径也存在从v到u的路径.有向图的极大强连通子图(这里指点数极大)被称为强连 ...
 - 【强连通分量】tarjan算法及kosaraju算法+例题
		
阅读前请确保自己知道强连通分量是什么,本文不做赘述. Tarjan算法 一.算法简介 Tarjan算法是一种由Robert Tarjan提出的求有向图强连通分量的时间复杂度为O(n)的算法. 首先我们 ...
 
随机推荐
- Oracle 临时事务表 全局临时表_global temporary table
			
所有的操作都在一个事务里,事务提交后,此表清空,特别适合做插入删除频率特别高的临时表操作,比如插入完数据就开始查询,查询完就删掉等,用完就扔! 临时表分事务级临时表和会话级临时表. 事务级临时表只对当 ...
 - Eclipse插件开发 swt ComboBoxCellEditor CCombo 下拉框高度
			
效果图: 代码如下 bindingPageTableViewer.setCellModifier(new ICellModifier() { public boolean canModify( ...
 - 精华阅读第 10 期 |解开阿尔法狗(AlphaGo)人工智能的画皮
			
谷歌用一个变了身的古老「穷举算法」,披上「神经网络」的画皮,假装「跨时代」的黑科技,忽悠广大「膜拜者」,「狮仙」我实在看不下去了,来揭一揭这只幺蛾子小狗的画皮. 本期是移动开发精英俱乐部的第10期推荐 ...
 - HDOJ-1999 不可摸数
			
不可摸数 转自:http://www.cnblogs.com/dongsheng/archive/2012/08/18/2645594.html Time Limit: 2000/1000 MS (J ...
 - POJ 1795
			
DNA Laboratory Time Limit: 5000MS Memory Limit: 30000K Total Submissions: 1425 Accepted: 280 Des ...
 - MySQL数据导出导入【转】
			
MySQL基础 关于MySQL数据导出导入的文章,目的有二: 1.备忘 2.供开发人员测试 工具 mysqlmysqldump 应用举例 导出 导出全库备份到本地的目录 mysqldump -u$US ...
 - 无法将 grub-efl-amd64-signed 软件包安装/target/ 中
			
64位win7下U盘安装64位ubuntu12.04,出现[无法将 grub-efl-amd64-signed 软件包安装/target/ 中]的错误 1. 已经确认为 12.04.2 的 Bug B ...
 - [转]Openstack neutron 防火墙
			
全文阅读传送门:http://www.ustack.com/wp-content/uploads/2013/11/Neutron%E9%98%B2%E7%81%AB%E5%A2%99.pdf 原作者: ...
 - 套题T4
			
Problem 1 无聊的gcd(gcd.c/cpp/pas) 话说出题人不会被查水表吧. 简单的问题描述:从N个正整数里面取出K个数的最大公因数最大是多少.(请将答案乘上k之后输出哦,谢谢合作.) ...
 - 区间dp笔记√
			
区间DP是一类在区间上进行dp的最优问题,一般是根据问题设出一个表示状态的dp,可以是二维的也可以是三维的,一般情况下为二维. 然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右两 ...