tarjan算法和Kosaraju算法
来源:互联网 发布:麦博煲音箱软件 编辑:程序博客网 时间:2024/06/16 07:38
tarjan算法和Kosaraju算法是求有向图的强连通分量的算法;Kosaraju算法模板tarjan算法模板
#include<iostream>#include<cstring>using namespace std;int map[100][100],nmap[100][100];int visit[100];int time1[100];int post[100];int n,m,num=0,postid=0;void dfs(int id);void ndfs(int id);int main(){ cin>>n>>m; for(int i=1;i<=m;i++) { int x,y; cin>>x>>y; map[x][y]=1; nmap[y][x]=1; } for(int i=1;i<=n;i++) if(visit[i]==0) dfs(i); for(int i=n;i>=1;i--) if(visit[post[i]]==1) { ndfs(post[i]); num++; } cout<<num<<endl; return 0; }void dfs(int id){ visit[id]=1; for(int i=1;i<=n;i++) if(visit[i]==0 && map[id][i]) dfs(i); postid++; post[postid]=id; }void ndfs(int id){ visit[id]=0; for(int i=1;i<=n;i++) if(visit[i]==1 && nmap[id][i]) ndfs(i);}
#include<cstdio>#include<algorithm>#include<string.h>using namespace std;struct node { int v,next;}edge[1001];int DFN[1001],LOW[1001];int stack[1001],heads[1001],visit[1001],cnt,tot,index;void add(int x,int y) { edge[++cnt].next=heads[x]; edge[cnt].v = y; heads[x]=cnt; return ;}void tarjan(int x) { DFN[x]=LOW[x]=++tot; stack[++index]=x; visit[x]=1; for(int i=heads[x]; i!=-1; i=edge[i].next) { if(!DFN[edge[i].v]) { tarjan(edge[i].v); LOW[x]=min(LOW[x],LOW[edge[i].v]); } else if(visit[edge[i].v ]) { LOW[x]=min(LOW[x],DFN[edge[i].v]); } } if(LOW[x]==DFN[x]) { do { printf("%d ",stack[index]); visit[stack[index]]=0; index--; } while(x!=stack[index+1]); printf("\n"); } return ;}int main() { memset(heads,-1,sizeof(heads)); int n,m; scanf("%d%d",&n,&m); int x,y; for(int i=1; i<=m; i++) { scanf("%d%d",&x,&y); add(x,y); } for(int i=1; i<=n; i++) if(!DFN[i]) tarjan(i); return 0;}
0 0
- tarjan算法和Kosaraju算法
- 强连通分量算法Kosaraju 和 Tarjan
- 强连通分量两种算法。tarjan和kosaraju
- 两种强连通分量算法——tarjan和kosaraju
- 6.3.1 强连通分支算法--Kosaraju算法、Tarjan算法和Gabow算法
- Tarjan算法 + kosaraju小证明哟
- 半连通分量--Tarjan/Kosaraju算法
- 有向图强连通分量的Tarjan算法和Kosaraju算法
- 一句话之--tarjan算法、kosaraju算法,求强连通分量
- kosaraju算法
- kosaraju算法
- Kosaraju算法
- Kosaraju算法
- Kosaraju算法
- 求强连通分量——Tarjan、Kosaraju算法
- 有向图的强连通分量Kosaraju算法 和 Tarjan算法思维详解及代码模板
- Kosaraju算法的分析和证明
- [图论] 有向图强连通分量 (kosaraju算法,Tarjan算法)
- NOI openjudge 1792.迷宫
- 求逆序对
- 括弧匹配检验
- static_cast、dynamic_cast、const_cast和reinterpret_cast总结
- 图的遍历[DFS][BFS]
- tarjan算法和Kosaraju算法
- 并查集
- 最小生成树Prim算法Kruskal算法
- Uva-156 Ananagrams
- 病毒&烦人的幻灯片
- 生成随机数
- 快速认识 ELK 中的 L:Logstash
- 素数
- 《将博客搬至CSDN》