UVA 315 求连通图里的割点
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20837
哎 大白书里求割点的模板不好用啊,许多细节理解起来也好烦。。还好找了另一份模板
请注意,这道题里的每组数据都是只有一组连通图的
#include <iostream>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;
const int N = 111;
vector<int> g[N];
int n, low[N], dfn[N], f[N];
bool vis[N]; void dfs(int u, int depth, const int &root) { //root为连通图的树根
dfn[u] = low[u] = depth;
vis[u] = true;
int cnt = 0;
for (int i=0; i<g[u].size(); i++) {
int v = g[u][i];
if (!vis[v]) {
cnt++;
dfs(v, depth+1, root);
low[u] = min(low[u], low[v]);
if (u!=root && low[v]>=dfn[u]) f[u]++; //当u不为树根的时候
if (u==root && cnt>=2) f[u]++; //当u为搜索树的树根的时候
} else low[u] = min(low[u], dfn[v]);
}
} int cut_point() {
dfs(1, 1, 1);
int ans = 0;
for (int i=1; i<=n; i++) if (f[i] >= 1) ans++;
return ans;
}
void init() {
memset(f, 0, sizeof(f));
memset(vis, false, sizeof(vis));
for(int i = 0;i < N;++i) g[i].clear();
}
int main() {
while(scanf("%d",&n)&&n) {
init();
int start,v;
while(scanf("%d",&start)&&start) {
while(getchar()!='\n') {
scanf("%d",&v);
g[start].push_back(v);
g[v].push_back(start);
}
}
printf("%d\n",cut_point());
}
return 0;
}
UVA 315 求连通图里的割点的更多相关文章
- UVA 315 求割点 模板 Tarjan
D - D Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Pract ...
- UVA 315 Network (模板题)(无向图求割点)
<题目链接> 题目大意: 给出一个无向图,求出其中的割点数量. 解题分析: 无向图求割点模板题. 一个顶点u是割点,当且仅当满足 (1) u为树根,且u有多于一个子树. (2) u不为树根 ...
- hdu 1856 求集合里元素的个数 输出最大的个数是多少
求集合里元素的个数 输出最大的个数是多少 Sample Input41 23 45 61 641 23 45 67 8 Sample Output42 # include <iostream&g ...
- Tarjan算法打包总结(求强连通分量、割点和Tarjan-LCA)
目录 Tarjan打包总结(求强连通分量.割点和Tarjan-LCA) 强连通分量&缩点 原理 伪代码 板子(C++) 割点 原理 伪代码 最近公共祖先(LCA) 原理 伪代码 板子 Tarj ...
- uva 315 Network(无向图求割点)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- B - Network - uva 315(求割点)
题意:给一个无向连通图,求出割点的数量. 首先输入一个N(多实例,0结束),下面有不超过N行的数,每行的第一个数字代表后面的都和它存在边,0表示行输入的结束(很蛋疼的输入方式). 分析:割点的模板题 ...
- UVA - 315 Network(tarjan求割点的个数)
题目链接:https://vjudge.net/contest/67418#problem/B 题意:给一个无向连通图,求出割点的数量.首先输入一个N(多实例,0结束),下面有不超过N行的数,每行的第 ...
- UVA 315 315 - Network(求割点个数)
Network A Telephone Line Company (TLC) is establishing a new telephone cable network. They are con ...
- 无向图求割点 UVA 315 Network
输入数据处理正确其余的就是套强联通的模板了 #include <iostream> #include <cstdlib> #include <cstdio> #in ...
随机推荐
- ubuntu 虚拟机系统调优
Ubuntu虚拟机镜像最佳实践 分区/boot >1G/root >10G/var >5G配swap空间,内存的2倍 vi /etc/secur ...
- buf.toString()
buf.toString([encoding[, start[, end]]]) encoding {String} 默认:'utf8' start {Number} 默认:0 end {Number ...
- 集训第六周 数学概念与方法 UVA 11722 几何概型
---恢复内容开始--- http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=31471 题意,两辆火车,分别会在[t1,t2],[ ...
- PAT 1059. C语言竞赛
PAT 1059. C语言竞赛 C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 冠军将赢得一份"神秘大奖"(比如很巨大的一本 ...
- SQL Server 2016 CTP3.2 开荒 Reporting Service 篇
仅仅是开荒资源页,反正过不了多久就会有新的CTP. 下面是MSDN I Tell you 提供的 不过是中文,个人不是很建议,因为现在大多的资源页都是英文的ed2k://|file|cn_sql_se ...
- SQL Server 2008如何创建定期自动备份任务
我们知道,利用SQL Server 2008数据库可以实现数据库的定期自动备份.方法是用SQL SERVER 2008自带的维护计划创建一个计划对数据库进行备份,下面我们将SQL SERVER 200 ...
- parse XML & JSON & js
parse XML & JSON & js how to parse xml data into json in js? https://stackoverflow.com/quest ...
- [luoguP1962] 斐波那契数列(矩阵快速幂)
传送门 解析详见julao博客连接 http://worldframe.top/2017/05/10/清单-数学方法-——-矩阵/ ——代码 #include <cstdio> #incl ...
- CURL不可以读写文件
最近在学ES(elastic search),参考http://www.learnes.net/里面翻译的官方权威指南(后面发现官网已经推出了中文版文档了).里面有的例子把访问ES的命令做了简化如下: ...
- jQuery插件之ajaxFileUpload(ajax文件上传)
一.ajaxFileUpload是一个异步上传文件的jQuery插件. 传一个不知道什么版本的上来,以后不用到处找了. 语法:$.ajaxFileUpload([options]) options参数 ...