poj 3180 求有多少个强联通分量
来源:互联网 发布:python cookielib模块 编辑:程序博客网 时间:2024/04/28 15:34
#include<cstdio>//挑战上的模版#include<cstring>#include<vector>#define MAX_N 10010using namespace std;vector<int>G[MAX_N];vector<int>rG[MAX_N];vector<int>vs;bool vis[MAX_N];int cmp[MAX_N];int V,ans,bol;void add_edge(int from,int to){G[from].push_back(to);rG[to].push_back(from);} void dfs(int v){vis[v]=1;for(int i=0;i<G[v].size();i++){if(!vis[G[v][i]])dfs(G[v][i]);}vs.push_back(v);}void rdfs(int v,int k,int step){vis[v]=1;cmp[v]=k;bol=step; for(int i=0;i<rG[v].size();i++){if(!vis[rG[v][i]])rdfs(rG[v][i],k,step+1);}}int scc(){memset(vis,0,sizeof(vis));vs.clear();for(int v=1;v<=V;v++){if(!vis[v])dfs(v);}memset(vis,0,sizeof(vis));int k=1;for(int i=vs.size()-1;i>=0;i--){bol=0;if(!vis[vs[i]])rdfs(vs[i],k++,1);if(bol>1)ans++;}return k;}int main(){int n,m,a,b;int count[MAX_N];memset(count,0,sizeof(count)); scanf("%d%d",&n,&m);V=n;for(int i=0;i<m;i++){scanf("%d%d",&a,&b);add_edge(a,b);}ans=0;scc();printf("%d\n",ans);return 0; }
0 0
- poj 3180 求有多少个强联通分量
- POJ 3180 强联通分量
- 求有向图强联通分量--Tarjan算法
- tarjan求强联通分量
- tarjan求强联通分量
- POJ 2186 Popular Cows Kosaraju求强联通分量
- POJ 2186 强联通分量
- POJ 1236 强联通分量
- POJ 1904 强联通分量
- POJ 2553 强联通分量
- poj Popular Cows 2186 (强连通分量 求有多少个点可以被 其他所有点到达) 好题
- tanjan算法求强联通分量
- 图论--Tarjan求强联通分量
- 有向图的强联通分量
- 有向图强联通分量uvalive4287
- Network of Schools+强联通分量+POJ
- POJ 2186 Popular Cows (强联通分量)
- POJ 3114 强联通分量+最短路
- oracle 数据库2
- 6- hadoop 数据完整性与校验
- 浅谈IO流
- 代码片段 mysql必知必会 存储过程 chapter 23
- Tensorboard简单使用
- poj 3180 求有多少个强联通分量
- 51Nod1082 与7无关的数
- Shell 结合 imagemagick
- 实现文件重命名
- SCI SCIE区别
- 戴尔电脑装系统用u盘启动及bios设置
- 01背包
- 基于IMOOC强力django+杀手级xadmin 打造上线标准的在线教育平台课程的学习(10)——Operation models.py的设计
- Tomcat配置多个项目