Kosaraju's Two-Pass Algorithm for SCC
来源:互联网 发布:大数据主要做什么 编辑:程序博客网 时间:2024/06/01 07:53
note:
1、g++ -o xxx.exe xxx.cpp -Wl,--stack -Wl,0x1000000 设置栈大小
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<fstream>#include<map>using namespace std;//#pragma comment(linker, "/STACK:204800000,204800000")vector<int> e[955555],ee[955555];int f[955555],l[955555],g[955555];vector<int> vc;map<int,int> mp;bool vis[955555];int col;int abc;int cnt=0;void dfs1(int u){ int i; vis[u]=true; for(i=0;i<ee[u].size();++i) { if(!vis[ee[u][i]]) dfs1(ee[u][i]); } f[u]=abc; ++abc; return ;}void dfs2(int u){ int i; vis[u]=true; l[u]=col; for(i=0;i<e[u].size();++i) { if(!vis[e[u][i]]) dfs2(e[u][i]); } return ;}ifstream fin("SCC.txt");int main(){// freopen("SCC.txt","r",stdin); int u,v,n=9,i,j; int fk1=-1,fk2=0;// while(cin>>u>>v)// while(scanf("%d %d",&u,&v)!=EOF) while(fin>>u>>v) {// if(u==0)// break; e[u].push_back(v); ee[v].push_back(u);// addedge(u,v); fk2++; fk1=max(fk1,u); fk1=max(fk1,v); } fin.close();// cout<<ecnt1<<" "<<ecnt2<<endl; n=fk1; cout<<fk1<<" "<<fk2<<endl; memset(vis,false,sizeof(vis)); abc=1; for(int i=1;i<=n;++i) if(!vis[i]) dfs1(i); memset(vis,false,sizeof(vis)); for(int i=1;i<=n;++i) { g[f[i]]=i; } col=0; for(int i=n;i>=1;--i) if(!vis[g[i]]) { ++col; dfs2(g[i]); } cout<<col<<endl; vc.clear(); mp.clear(); for(i=1;i<=n;++i) { mp[l[i]]++; } map<int,int>:: iterator it; int ans[15],ac[15],tmp,tmpp; for(i=1;i<=min(col,5);++i) { tmp=-1; for(it=mp.begin();it!=mp.end();++it) { if(it->second>tmp) { tmp=it->second; tmpp=it->first; } } ans[i]=tmp; mp[tmpp]=-2; } for(;i<=5;++i) { ans[i]=0; } for(i=1;i<=5;++i) { cout<<ans[i]<<" "; } cout<<endl; system("pause"); return 0;}
0 0
- Kosaraju's Two-Pass Algorithm for SCC
- SCC的Kosaraju算法模板
- Poj 1236 (scc- Kosaraju算法实现)
- kosaraju算法-求解有向图SCC
- Strassen’s algorithm for matrix multiplication
- hdu 3836 Equivalent Sets(SCC,Kosaraju算法)
- 强连通分量(SCC)Kosaraju算法学习笔记
- Pass two dim array!
- Algorithm: Euclid's Algorithm
- 【Algorithm】Manacher's Algorithm
- POJ1904 King's Quest SCC
- Implementation of Strassen’s Algorithm for Matrix Multiplication
- Manacher's algorithm for finding longest palindromic substring
- Kruskal’s Algorithm for finding Minimum Spanning Tree
- why use two pass encode
- [Algorithm]九章七:Two Pointer
- Algorithm: Extended Euclid's Algorithm
- How To Get Min-Cost Between two points in graph (Dijkstra’s algorithm)
- JSP--JSP内置对象
- 《机器学习技法》第九讲:Decision Tree
- # MySQL中常用的语句(二)
- Linux服务器集群系统--作者
- JAVA虚拟机总结
- Kosaraju's Two-Pass Algorithm for SCC
- 【并查集】 HDOJ 3461 Code Lock
- WWDC2014之iOS使用动态库
- Menteor
- javascript 相关书籍 网站
- android更改api版本
- 人人网2015研发笔试卷D
- 给ActionBar中的按钮添加旋转动画(刷新动画)
- (hdu step 3.2.7)免费馅饼(数塔变形:求所能接到馅饼的最大数)