强连通分量[trajan]
http://poj.org/problem?id=2186
const int MM = 11111; #define debug puts("wrong") typedef __int64 int64; int N,M; vector<int>edge[MM]; const int maxn = 11111; //节点数 bool instack[maxn]; int ief,top,bcnt,st[maxn]; int low[maxn],dfn[maxn],belong[maxn]; int out[MM];void get_data() {int i,j,k,x,y;for(i=0;i<=N;i++) edge[i].clear();for(i=0;i<M;i++) {scanf("%d%d",&x,&y);edge[x].push_back(y);} } void get_init(int n) { //节点数for(int i=0;i<=n;i++)low[i]=dfn[i]=instack[i]=belong[i]=0;top=bcnt=0; ief=1; } void trajan(int u) {int i,j,k,v;dfn[u]=low[u]=ief++;st[top++]=u; instack[u]=true;for(i=0;i<edge[u].size();i++) {v=edge[u][i];if(!dfn[v]) trajan(v);if(low[u]>low[v]) low[u]=low[v];else if(instack[v] && dfn[v]<low[u]) low[u]=dfn[k];}if(low[u]==dfn[u]) {bcnt++;do {v=st[--top];instack[v]=false;belong[v]=bcnt;}while(u!=v);} } int get_ans(int x) {int res=0;for(int i=1;i<=N;i++) if(belong[i]==x) res++;return res; } void solve() {int i,j,k,v;get_init(N);for(i=1;i<=N;i++) if(!dfn[i]) trajan(i);for(i=1;i<=N;i++) out[i]=0;for(i=1;i<=N;i++) {for(j=0;j<edge[i].size();j++) {v=edge[i][j];if(belong[i]!=belong[v]) out[belong[i]]++;}}int res,cc=0;for(i=1;i<=bcnt;i++) if(!out[i]) cc++,res=i;if(cc>1) puts("0");else printf("%d\n",get_ans(res)); }
转载于:https://www.cnblogs.com/zhang1107/archive/2013/05/04/3058859.html
强连通分量[trajan]相关推荐
- Targan 算法[有向图强连通分量]
[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(stronglyconnected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大 ...
- 有向图强连通分量的三种算法
一. Kosaraju算法 1. 算法思路 基本思路: 这个算法可以说是最容易理解,最通用的算法,其比较关键的部分是同时应用了原图G和反图GT.(步骤1)先用对原图G进行深搜形成森林 ...
- Kosaraju算法、Tarjan算法分析及证明--强连通分量的线性算法
一.背景介绍 强连通分量是有向图中的一个子图,在该子图中,所有的节点都可以沿着某条路径访问其他节点.强连通性是一种非常重要的等价抽象,因为它满足 自反性:顶点V和它本身是强连通的 对称性:如果顶点V和 ...
- 有向图强连通分量tarjan算法
转自:http://www.byvoid.com/blog/scc-tarjan/ http://blog.csdn.net/geniusluzh/article/details/6601514 在有 ...
- POJ1236Network of Schools——强连通分量缩点建图
[题目描述] A number of schools are connected to a computer network. Agreements have been developed among ...
- HDU 5934:Boom——强连通分量+缩点
[题目描述] There are N bombs needing exploding.Each bomb has three attributes: exploding radius ri, posi ...
- 有向图强连通分量的Tarjan算法——转自BYVoid
[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...
- [转载] 有向图强连通分量的Tarjan算法 ——byvoid
[有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...
- 有向图强连通分量的Tarjan算法
有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大 ...
- 有向图强连通分量之Tarjan算法
出处https://www.byvoid.com/zhs/blog/scc-tarjan [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly con ...
最新文章
- python22期_python学习第22期
- HANA 数据库备份hang住的解决办法
- ML:MLOps系列讲解之《MLOps Stack Canvas堆栈画布之MLOps Stack CanvasCRISP-ML(Q)》解读
- 批作业是小学老师的一大乐趣 | 今日最佳
- Linux配置编程环境+云服务器上传文件
- 前端学习(3204):类式组件
- 工作297:shift+$形成元
- 语音识别芯片的工作原理和分类
- Mobile端Catalog下面Category的配置步骤
- 20151024-1025-威海-第5届全国高校软件工程专业教育年会参会总结
- [转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)
- jmeter使用_jmeter概念及使用
- JavaScript系列--类型判断的4种基本方法,研究jquery的type方法,空对象的检测方法,类数组对象...
- 提取swf素材_swf素材提取工具
- 基于统计的开源翻译系统介绍
- matlab对函数时间抽样,信号与系统实验报告4 matlab时间抽样
- 【RFID】天线技术
- 【轮子】有权二部图中的最大匹配、最小匹配python轮子
- 2018最佳计算机配置,2018年主流的组装电脑配置是什么样的?
- Get Out of My Lab: Large-scale, Real-Time Visual-Inertial Localization文章理解
热门文章
- pytorch maskrcnn实战
- ubuntu修改文件权限
- ValueError: threshold must be numeric and non-NAN, try sys.maxsize for untruncated representation
- Linux下使用nohup运行python脚本报错:Import error: No module named numpy问题解决
- c语言中按字节运算,C语言中位运算的巧用
- 蔚来es6_国产Model Y订单挤爆官网,蔚来ES 6惨遭大量退订?
- apache2: unrecognized service
- php安装调式redis扩展,下载安装thinkphp5.0,调试Redis是否可以正常使用
- 鸿蒙是安卓改名,EMUI更名为鸿蒙,这几个问题的答案马上就能揭晓!
- mysql sycho_2005年12月23日