http://poj.org/problem?id=2186

View Code

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]相关推荐

  1. Targan 算法[有向图强连通分量]

    [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(stronglyconnected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大 ...

  2. 有向图强连通分量的三种算法

    一.     Kosaraju算法 1.      算法思路 基本思路: 这个算法可以说是最容易理解,最通用的算法,其比较关键的部分是同时应用了原图G和反图GT.(步骤1)先用对原图G进行深搜形成森林 ...

  3. Kosaraju算法、Tarjan算法分析及证明--强连通分量的线性算法

    一.背景介绍 强连通分量是有向图中的一个子图,在该子图中,所有的节点都可以沿着某条路径访问其他节点.强连通性是一种非常重要的等价抽象,因为它满足 自反性:顶点V和它本身是强连通的 对称性:如果顶点V和 ...

  4. 有向图强连通分量tarjan算法

    转自:http://www.byvoid.com/blog/scc-tarjan/ http://blog.csdn.net/geniusluzh/article/details/6601514 在有 ...

  5. POJ1236Network of Schools——强连通分量缩点建图

    [题目描述] A number of schools are connected to a computer network. Agreements have been developed among ...

  6. HDU 5934:Boom——强连通分量+缩点

    [题目描述] There are N bombs needing exploding.Each bomb has three attributes: exploding radius ri, posi ...

  7. 有向图强连通分量的Tarjan算法——转自BYVoid

    [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...

  8. [转载] 有向图强连通分量的Tarjan算法 ——byvoid

    [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...

  9. 有向图强连通分量的Tarjan算法

    有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大 ...

  10. 有向图强连通分量之Tarjan算法

    出处https://www.byvoid.com/zhs/blog/scc-tarjan [有向图强连通分量] 在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly con ...

最新文章

  1. python22期_python学习第22期
  2. HANA 数据库备份hang住的解决办法
  3. ML:MLOps系列讲解之《MLOps Stack Canvas堆栈画布之MLOps Stack CanvasCRISP-ML(Q)》解读
  4. 批作业是小学老师的一大乐趣 | 今日最佳
  5. Linux配置编程环境+云服务器上传文件
  6. 前端学习(3204):类式组件
  7. 工作297:shift+$形成元
  8. 语音识别芯片的工作原理和分类
  9. Mobile端Catalog下面Category的配置步骤
  10. 20151024-1025-威海-第5届全国高校软件工程专业教育年会参会总结
  11. [转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)
  12. jmeter使用_jmeter概念及使用
  13. JavaScript系列--类型判断的4种基本方法,研究jquery的type方法,空对象的检测方法,类数组对象...
  14. 提取swf素材_swf素材提取工具
  15. 基于统计的开源翻译系统介绍
  16. matlab对函数时间抽样,信号与系统实验报告4 matlab时间抽样
  17. 【RFID】天线技术
  18. 【轮子】有权二部图中的最大匹配、最小匹配python轮子
  19. 2018最佳计算机配置,2018年主流的组装电脑配置是什么样的?
  20. Get Out of My Lab: Large-scale, Real-Time Visual-Inertial Localization文章理解

热门文章

  1. pytorch maskrcnn实战
  2. ubuntu修改文件权限
  3. ValueError: threshold must be numeric and non-NAN, try sys.maxsize for untruncated representation
  4. Linux下使用nohup运行python脚本报错:Import error: No module named numpy问题解决
  5. c语言中按字节运算,C语言中位运算的巧用
  6. 蔚来es6_国产Model Y订单挤爆官网,蔚来ES 6惨遭大量退订?
  7. apache2: unrecognized service
  8. php安装调式redis扩展,下载安装thinkphp5.0,调试Redis是否可以正常使用
  9. 鸿蒙是安卓改名,EMUI更名为鸿蒙,这几个问题的答案马上就能揭晓!
  10. mysql sycho_2005年12月23日