tyvj 1111 舞会 用kosaruju算法求强联通分量的个数
2012-10-16 14:09
302 查看
http://new.tyvj.cn/Problem_Show.aspx?id=1111
//kosaruju算法,强连通量个数 #include<cstdio> #include<cstring> #include<math.h> #include<stdlib.h> #include<algorithm> #include<ctime> #include<iostream> #include<vector> using namespace std; const int maxn=201; vector<int>G[maxn],Gt[maxn]; int t,n; int post[maxn]; bool vis[maxn]; int cmp(int a,int b)//降序 { return a>b; } void dfs(vector<int>*G,int u) { vis[u]=true; for(int i=0;i<G[u].size();i++) { if(!vis[G[u][i]]) dfs(G,G[u][i]); } post[u]=++t;//结点u变黑时间 } int dfsAll(vector<int>*G,int *order)//以order顺序dfs图G { memset(vis,0,sizeof(vis)); t=0; int times=0; for(int i=1;i<=n;i++) if(!vis[order[i]]) { times++; dfs(G,order[i]); } return times; } int main() { #ifndef ONLINE_JUDGE freopen("in1.txt","r",stdin); #endif int i,j; scanf("%d",&n); for(i=1;i<=n;i++) { while(scanf("%d",&j)==1 && j) {//采用vector,保存点i所有连接的点,并不保存边的信息 G[i].push_back(j); Gt[j].push_back(i); } } int order[maxn]; for(i=1;i<=n;i++) order[i]=i; dfsAll(G,order); //for(i=1;i<=n;i++) printf("%d\n",post[i]); for(i=1;i<=n;i++) order[post[i]]=post[i]; sort(order+1,order+n+1,cmp); int ans=dfsAll(Gt,order); printf("%d\n",ans); //printf("%.2lf\n",(double)clock()/CLOCKS_PER_SEC); return 0; } /* 建立post数组,点u变黑的时间为post[u],按照结束时间 递减的顺序遍历逆图。 深搜两次,第一次遍历原图,获得post数组; 第二次,以post数组递减的顺序遍历逆图。 */
相关文章推荐
- TYVJ 1111 舞会 强联通分量版解题报告
- tyvj 1111 舞会 有向图强连通分量 Kosaraju模板 tarjan模板
- Vijos P1023Victoria的舞会3【贪心+DFS求强联通分量】
- TYVJ 1111 舞会 解题报告
- [Tyvj1111 舞会]
- 1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会 (强联通分量)
- bzoj1654[The Cow Prom 奶牛舞会] tarjan求有向无环图的强联通分量
- Vijos P1023Victoria的舞会3【贪心+DFS求强联通分量】
- 题目:找出有向图中的弱联通分量
- POJ 3177 Redundant Paths 边双联通分量 缩点
- POJ 2186 Popular Cows Kosaraju求强联通分量
- HDU 4005 边双联通分量
- poj2186 Popular Cows (强联通分量+缩点)
- |Vijos|图论强连通分量|P1023 Victoria的舞会3
- Hdu 3686 Traffic Real Time Query System(双联通分量+LCA)
- BZOJ 1718 [Usaco2006 Jan] Redundant Paths 分离的路径 双联通分量
- UVALive - 3523 Knights of the Round Table(双联通分量)
- 【BZOJ】1051 [HAOI2006]受欢迎的牛 强联通分量
- Strictly Positive Matrix CodeForces - 402E 强联通分量 模版
- HDU6072(Kosaraju求强联通分量+位运算)