- 浏览: 118370 次
- 性别:
- 来自: 北京
最新评论
终于写好无向图找割点了,笔记一下
割点的充分必要条件是
1. 对于dfs搜索树的根,有至少两个子树
2. 对于非dfs树的根,有至少一个子树
p.s.其实这两个条件是一样的,因为对于非根节点,有一条边连到父节点,所以把它看成是树根的时候,就有至少两个子树了
割点的充分必要条件是
1. 对于dfs搜索树的根,有至少两个子树
2. 对于非dfs树的根,有至少一个子树
p.s.其实这两个条件是一样的,因为对于非根节点,有一条边连到父节点,所以把它看成是树根的时候,就有至少两个子树了
#include <cstdio> #include <cstring> #include <vector> #include <set> #include <stack> using namespace std; vector<vector<int> > g; set<int> node; vector<int> dfn, low, sub; int cnt; void dfs(int u) { dfn[u] = low[u] = cnt++; for (int i = 0; i < g[u].size(); ++i) { int v = g[u][i]; if (dfn[v] == -1) { dfs(v); low[u] = min(low[u], low[v]); if (dfn[u] <= low[v]) ++sub[u]; } else { low[u] = min(low[u], dfn[v]); } } } int main() { int tcs = 1, u, v; while (true) { g.clear(); node.clear(); bool read = false; while (scanf("%d", &u), u != 0) { read = true; scanf("%d", &v); int t = max(u, v) + 1; t = max((int)g.size(), t); g.resize(t); g[u].push_back(v); g[v].push_back(u); node.insert(u); node.insert(v); } if (!read) break; dfn.assign(g.size(), -1); low.assign(g.size(), 0); sub.assign(g.size(), 0); cnt = 0; int root = *node.begin(); dfs(root); --sub[root]; if (tcs > 1) printf("\n"); printf("Network #%d\n", tcs++); bool has = false; for (int i = 0; i < g.size(); ++i) if (sub[i] >= 1) { has = true; printf(" SPF node %d leaves %d subnets\n", i, sub[i] + 1); } if (!has) printf(" No SPF nodes\n"); } return 0; }
发表评论
-
lower_bound and upper_bound
2012-02-09 00:36 1151/** * @brief Finds the ... -
HDU 3954
2012-02-05 10:43 839线段树变种,也是在2logn段上面做文章 /* * ... -
HDU 4027
2012-02-04 22:09 849线段树变种 在2logn段上面做文章,swap(x, y)太阴 ... -
ICPC编码建议
2011-10-28 09:52 887写代码最重要的是清晰,包括思路的清晰和代码结构的清晰。我们无法 ... -
[转载]TopCoder插件
2011-09-08 22:13 969转载自:http://acm.cugb.edu.cn/blog ... -
UVALive 5112 - Sales Prediction
2011-01-06 10:19 1187封装了矩阵类 比赛做得很郁闷,为什么别人写得很长、很罗嗦的代码 ... -
hdu 3236
2010-12-12 14:10 797终于能过这道题了,算是背包必做题之一吧 /* * Au ... -
pku 1018
2010-12-11 15:18 602写了两三个版本,最后这个效率最高 #include < ... -
布斯(Booth)乘法
2010-10-07 19:59 1137源自http://watashi.ws/blog/1515/z ... -
高斯消元
2010-10-07 14:18 803import java.util.*; import j ... -
整数划分
2010-10-07 10:38 837#include <cstdio> #inc ... -
Treap
2010-09-18 22:19 979// Treap // Tested: bjtu1057 ... -
矩阵快速幂
2010-09-18 14:24 1048typedef LL matrix[55][55]; ... -
maximum clique 最大团
2010-09-02 18:12 1134最大团模板 #include <cstdio> ... -
计算Jacobi符号
2010-08-31 13:15 1291Quadratic reciprocity The Jacob ... -
Java 高效I/O
2010-08-19 16:54 774static BufferedReader cin = ... -
DLX pku 3076
2010-08-11 23:45 877标准数独,精确覆盖 // pku3076.cpp #in ... -
DLX hust 1017
2010-08-11 16:50 848“精确覆盖”问题 #include <cstdio& ... -
DLX hdu 3498
2010-08-11 16:48 1039“多重覆盖”或“重复覆盖”问题 #include < ... -
hdu 3509
2010-08-09 11:22 1004推导公式的题目,矩阵幂关键就在于构造系数矩阵 备忘: S(n, ...
相关推荐
zju1001--1399的数据。全是.in和.out文件。
zju 1025 Wooden Sticks http://acm.zju.edu.cn/show_problem.php?pid=1025
zju超强代码,大概有一半的题目吧,从别人那里弄的
这个是浙江大学操作系统课程讲义,此部分为第2章,配套教材为操作系统的恐龙书
zju电机学作业.pdf
cpp codes for zju.edu.cn problems
zju部分 解题报告zju部分 解题报告
acm zju 额度cnacm zju 额度cnacm zju 额度cnacm zju 额度cnacm zju 额度cn
acm 新手必备 浙大 解答 代码库 zoj zju
zju 1048 Financial Managementhttp://acm.zju.edu.cn/show_problem.php?pid=1048
ZJU/zoj 题库上的部分题源码 本人博客: hi.baidu.com/xiaoxianxi_acm
zoj700代码,供acm爱好者研究学习,但请注意,切勿上交。
zju 1642 Match for Bonus DP,滚存??zju 1642 Match for Bonus DP,滚存??zju 1642 Match for Bonus DP,滚存??zju 1642 Match for Bonus DP,滚存??zju 1642 Match for Bonus DP,滚存??
2、课后作业题6.8 3、Minimax 给一个只有叶子节点值的图 叉掉α-β pruning 4、贝叶斯网络 5、Markov Network 给一个Mark
zju题目与解答集合,学习ACM编程不可多得的好东西。
zju动态规划试题选集 ,有ZOJ所有的动态规划题及其代码,很好的!!!
ZJU_V1.2.10.apk
zju 3406题 题目打包 http://hi.baidu.com/leokan/blog/item/baa1e6c48c9af5af8326acfa.html
acm.zju.com 中的 基因问题原代码-acm.zju.com the original genetic code issues