UVA315_Network _无向图割点::Tarjan
来源:互联网 发布:学一门编程语言要多久 编辑:程序博客网 时间:2024/06/11 14:57
题意
给出一个无向图,求割点。
思路
割点有两种情况:
1.根节点有两个以上子树,则根节点是割点
2.某个点的子树的回边不能连到该点之上,则该点是割点
判断这两种情况用的是Tarjan算法。
对于第二种情况,只需要判断 Root[v] <= Mark[u]。
题目链接
VJudge中的链接
https://vjudge.net/contest/169043#problem/B
AC代码
#include<cstdio>#include<iostream>#include<cstring>#include<vector>using namespace std;const int maxn = 100 + 10;int N;int Ans;char Str[300];vector<int> G[maxn];int Mark[maxn], Root[maxn];bool Ap[maxn];int Index;void Tarjan(int u, int pre){ Mark[u] = Root[u] = ++ Index; int nchild = 0; for(int i= 0; i< G[u].size(); i++) { int v = G[u][i]; if(Mark[v] == 0) { nchild ++; Tarjan(v, u); if(Root[v] < Root[u]) Root[u] = Root[v]; if(pre == -1 && nchild > 1) Ap[u] = true; else if(pre != -1 && Root[v] >= Mark[u]) Ap[u] = true; } else if(v != pre && Mark[v] < Root[u]) Root[u] = Mark[v]; }}int FAP(){ memset(Mark, 0, sizeof Mark); memset(Root, 0, sizeof Root); memset(Ap, false, sizeof Ap); Index = 0; Tarjan(1, -1); int ret = 0; for(int i= 1; i<= N; i++) if(Ap[i]) ret ++; return ret;}int main(){ while(scanf("%d", &N), N) { for(int i= 1; i<= N; i++) G[i].clear(); int s, x; while(scanf("%d", &s), s) { char c; while(1) { scanf("%d%c", &x, &c); G[x].push_back(s); G[s].push_back(x); if(c == '\n') break; } } printf("%d\n", FAP()); } return 0;}
阅读全文
0 0
- UVA315_Network _无向图割点::Tarjan
- poj1144Network 无向图求割点Tarjan
- 无向图 tarjan 总结
- 用Tarjan算法求无向连通图割点&&割边
- POJ 1523 SPF Tarjan求无向图割点
- UVA 315 Network(Tarjan求无向图割点)
- ZOJ2588 无向图求割边 tarjan算法
- 模板,无向图强连通缩点,tarjan
- POJ 1144 Network 无向图求割点Tarjan
- tarjan无向图求割点,cpp板子
- Tarjan无向图最小权值割边
- 无向图和有向图的tarjan
- poj1236|poj3177 tarjan,强联通,有向/无向
- 图论_无向图领接表
- POJ 3694 network 无向图求桥 手写栈版tarjan
- poj 3160 spfa+tarjan 无向图最值问题
- poj1523 SPF 无向连通图 求割点 关节点 tarjan算法
- zoj Burning Bridges 无向连通图 求割点 桥 tarjan
- Servlet工作原理解析
- Android开发之Dialog实例-删除对话框的实现
- logback添加error预警
- 对js闭包的理解
- 通过SpringMVC集成freemark模板生成页面
- UVA315_Network _无向图割点::Tarjan
- 在linux下玩转带有超时时间的connect函数------某次面试遇到过
- Jupyter Notebook 初识
- ConstraintLayout约束布局学习笔记
- spring学习
- Bootstrap FileInput中文API整理
- 机器学习全教程
- html和css基础--float属性给父元素带来的问题及方案
- FutureTask使用示例