poj 2553 tarjian+缩点。。。强连通分量
来源:互联网 发布:why china is safe知乎 编辑:程序博客网 时间:2024/06/10 22:16
//强连通分量为搜索树中的一颗子树//stack自定义栈,dfn(u)为结点u的次序编号//low(u)为u或u的子树能够追溯到的最早的栈中结点的次序号//belong[u]为u所属连通分量
#include<iostream>#include<string.h>#include<algorithm>#include<string>#define N 5005using namespace std;bool istack[N];int stack[N],dfn[N],low[N],belong[N],head[N],out[N];typedef struct str{ int to;int next;}Node;Node node[N*3];int top,num,res,index,n;void init(){memset(head,-1,sizeof(head));memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));memset(out,0,sizeof(out));memset(istack,false,sizeof(istack));num=top=res=0;index=1;}void dfs(int i){dfn[i]=low[i]=index++;stack[top++]=i;istack[i]=true;for(int j=head[i];j!=-1;j=node[j].next){int v=node[j].to;if(!dfn[v]){dfs(v);if(low[v]<low[i]) low[i]=low[v];}else if(istack[v]&&dfn[v]<low[i])low[i]=dfn[v];}int u;if(dfn[i]==low[i])//回溯,以i为根的搜索子树上的所有结点是一个强连通分量{res++;do{u=stack[--top];istack[u]=false;belong[u]=res;}while(i!=u);}}void tarjan(){for(int i=1;i<=n;++i)if(!dfn[i]) dfs(i);}void solve()//缩点{for(int i=1;i<=n;++i){for(int j=head[i];j!=-1;j=node[j].next)if(belong[i]!=belong[node[j].to]){out[belong[i]]++;break;}}for(int i=1;i<=n;++i)if(!out[belong[i]])cout<<i<<" ";cout<<endl;}int main(){ int m;while(cin>>n>>m&&n){init();for(int i=0;i!=m;++i){ int a,b;cin>>a>>b;node[num].to=b;node[num].next=head[a];head[a]=num++;}tarjan();solve();}return 0;}
0 0
- poj 2553 tarjian+缩点。。。强连通分量
- poj 2553 tarjian+缩点。。。强连通分量
- [学习]用tarjian算法求强连通分量,tarjian算法缩点[学习知识~]
- poj 2186 强连通分量 缩点
- poj 1236 强连通分量 缩点
- poj 1236 强连通分量+缩点
- POJ 2186(强连通分量 缩点)
- poj 2553 (tarjan求强连通分量+缩点)
- POJ 2553 强连通分量+缩点+求出度
- 【笔记】tarjian算法 求强连通分量
- 强连通分量缩点
- 强连通分量缩点
- poj 2553【强连通分量】
- poj 2553(强连通分量)
- poj 2186 Popular Cows (强连通分量,缩点)
- POJ 3592 Instantaneous Transference 强连通分量+缩点+DP
- POJ 1236 强连通分量+缩点+入度出度
- POJ 1236 Network of Schools强连通分量缩点
- 2013.5打基础 (二)
- hdu 1232 畅通工程 并查集模版
- MySQL问题解决:-bash:mysql:command not found
- 2014年3月要阅读的书籍
- ffmpeg结构体以及函数介绍(三)
- poj 2553 tarjian+缩点。。。强连通分量
- LeetCode Reorder List
- Android中图片过大造成内存溢出,OOM(OutOfMemory)异常解决方法(1)
- FlashDevelop 与 FlashBuilder 关于Embed paths 路径的区别
- 各个数据库的连接URL
- 浅谈HTTP中Get与Post的区别
- w7安装oracle 10g时发生“程序异常终止。发生内部错误”的提示
- 查看mysql表的字符集
- linux下的二进制工具