割点
来源:互联网 发布:breed mac地址修改 编辑:程序博客网 时间:2024/04/28 09:21
#include <iostream>#include <stdio.h>#include <algorithm>#include <queue>#include <string.h>#include <stack>#include <vector>using namespace std;const int maxn=110;int n;vector<int> g[110];int son=0,d_cnt=0;int cut[110];int low[110],dfn[110],vis[110];void dfs(int u){ low[u] = dfn[u] = ++d_cnt; vis[u]=1; for(int i=0;i<g[u].size();++i) { int v=g[u][i]; if(!vis[v]) { dfs(v); low[u]=min(low[u],low[v]); if(low[v]>=dfn[u] && u!=1) { cut[u]++; } else if(u==1) { son++; } } else low[u]=min(low[u],dfn[v]); }}void tarjan(){ memset(low,0,sizeof(low)); memset(dfn,0,sizeof(dfn)); memset(cut,0,sizeof(cut)); memset(vis,0,sizeof(vis)); son=0; d_cnt=0; dfs(1); int ans=0; for(int i=2;i<=n;++i) if(cut[i]) ans++; if(son>=2) ans++; printf("%d\n",ans);}int main(){ while(scanf("%d",&n)!=EOF) { if(n==0) break; for(int i=1;i<=n;++i) g[i].clear(); int u,v; while(scanf("%d",&u)!=EOF) { if(u==0) break; while(getchar()!='\n') { scanf("%d",&v); g[u].push_back(v); g[v].push_back(u); } } tarjan(); } return 0;}
阅读全文
0 0
- 割点、割边
- 割点、割边
- 割点 割边
- 割点、割边
- 割点
- 割点
- 割点
- 割点
- 【割点】
- 割点
- 割点
- 割点
- 割点和割边
- 割点,割边模板
- 割点&割边模板
- 割点和割边
- 割点 割边 模板
- 割边与割点
- python3获得本地位置和天气
- __slots__+@property将方法变成属性进行调用
- 机器学习之分类学习
- 1027. Colors in Mars (20)
- 状态模式
- 割点
- Python 修改AD账号密码(二)- 修改域账号密码
- 将数字以“M”的格式输出
- 最短路 ~Interesting Calculator 湖南省第九届程序设计竞赛
- LeetCode—Target Sum
- vue filter 过滤器
- HM模型学习(二)
- 给即将开始的新旅程
- 深入理解计算机系统 2