UVA 315 无向图 求割点
来源:互联网 发布:php网页跳转代码 编辑:程序博客网 时间:2024/06/02 04:01
题意: 给出一张无向图,求割点的个数
思路:很裸的题目,直接套用模版即可。
/**求割点一个顶点u是割点,当且仅当满足(1)或(2)(1) u为树根,且u有多于一个子树。(2) u不为树根,且满足存在(u,v)为树枝边(或称 父子边,即u为v在搜索树中的父亲),使得 dfn(u)<=low(v)。(也就是说 V 没办法绕过 u 点到达比 u dfn要小的点)注:这里所说的树是指,DFS下的搜索树*/#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cstdlib>#include <vector>using namespace std;#define N 10010int dfn[N]; ///代表最先遍历到这个点的时间int low[N];///这个点所能到达之前最早的时间点int Father[N];///保存这个节点的父亲节点int n,Time;vector<vector<int> >G;void init(){ G.clear(); G.resize(n+1); memset(low,0,sizeof(low)); memset(dfn,0,sizeof(dfn)); memset(Father,0,sizeof(Father)); Time=0;}void Tarjan(int u,int fa){ low[u]=dfn[u]=++Time; Father[u]=fa; int len=G[u].size(), v; for(int i=0;i<len;i++) { v=G[u][i]; if(!dfn[v]) { Tarjan(v,u); low[u]=min(low[u],low[v]); } else if(fa!=v) low[u]=min(dfn[v],low[u]); }}void solve(){ int Rootson=0,ans=0; ///根节点儿子的数量 bool Cut[N]={false};///标记数组,判断这个点是否是割点 Tarjan(1,0); for(int i=2;i<=n;i++) { int v=Father[i]; if(v==1) ///也是就说 i的父亲是根节点 Rootson++; else if(dfn[v]<=low[i]) ///判断是否满足条件(2) Cut[v]=true; } for(int i=2;i<=n;i++) { if(Cut[i]) ans++; } if(Rootson>1) ///满足条件(1) ans++; printf("%d\n",ans);}int main(){ while(scanf("%d",&n),n) { int a,b; char ch; init(); while(scanf("%d",&a),a) { while(scanf("%d%c",&b,&ch)) { G[a].push_back(b); G[b].push_back(a); if(ch=='\n') break; } } solve(); } return 0;}
0 0
- UVA 315 无向图 求割点
- UVA 315 Network(无向图求割点)
- uva 315 Network(无向图求割点)
- UVa 315 Network(无向图求割点)
- Uva 315 求无向图的割点的个数
- POJ 1144 && UVA 315 ——无向连通图求割顶
- UVA 315 Network(Tarjan求无向图割点)
- UVa 10594 Data Flow(无向图的费用流)
- uva 10765(无向双连通量)
- UVa 796 Critical Links(无向图求割边)
- UVA-796(无向图割桥模板题)
- UVA 351 Network 无向图求割点
- 图--无向图
- 无向图+BFS
- 无向图+DFS
- 无向图
- 无向图邻接矩阵
- 无向图
- mongodb
- C#利用反射复制实体类
- 史上最全的maven pom.xml文件教程详解
- 2014预赛第一题
- mysql 查看binlog日志
- UVA 315 无向图 求割点
- Chukwa搭建、安装、部署、应用
- 内存映射文件
- KJFrameForAndroid 资料——KJHttp使用方法
- 机器学习入门
- org.apache.commons.collections.CursorableLinkedList
- linux(centeros)下搭建svn详解
- java ArrayList 源码浅析
- 软件设计六大原则