
树的重心
发布日期:2021-05-07 02:30:09
浏览次数:20
分类:精选文章
本文共 619 字,大约阅读时间需要 2 分钟。
问题引入
对于一棵 n n n个节点的无根树,找到一个点,使得把该树变成以该点为根的有根树时,最大子树的节点数最小(删除这个点后的最大连通块最小)
设 d ( i ) d(i) d(i)为以 i i i为根节点的子树个数,则:
d ( i ) = Σ d ( j ) + 1 d(i)=Σd(j)+1 d(i)=Σd(j)+1
若节点 i i i的子节点为 v v v,那么最后的答案就是使 m a x ( d ( v ) , n − d ( i ) ) max(d(v),n-d(i)) max(d(v),n−d(i))最小的节点 i i i
代码
vector G[maxn];int d[maxn];int n, ans = inf, id;int dfs(int u, int father) { //dfs(1,-1) d[u] = 1; for (auto v: G[u]) { if (v != father) d[u] += dfs(v, u); } int res = n - d[u]; for (auto v: G[u]) { if (v != father) res = max(res, d[v]); } if (ans > res) ans = res, id = u; return d[u];}
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月23日 08时24分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MongoDB版本及存储引擎区别
2021-05-09
shell echo单行和多行文字定向写入到文件中
2021-05-09
AtCoder Beginner Contest 100 题解
2021-05-09
【数据结构】可持久化线段树初步
2021-05-09
Java高性能编程之CAS与ABA及解决方法
2021-05-09
从BIO到Netty的演变
2021-05-09
《算法导论》第二章笔记
2021-05-09
HTML节点操作
2021-05-09
HTML5新特性
2021-05-09
cmp命令
2021-05-09
一次编辑
2021-05-09
JavaScript中的链式调用
2021-05-09
day-04-列表
2021-05-09
Linux 磁盘管理(df fu fdisk mkfs mount)
2021-05-09
第一类曲面积分
2021-05-09
MySQL锁机制
2021-05-09
Go 数组&切片
2021-05-09
Go 文件操作
2021-05-09
老Python总结的字典相关知识
2021-05-09
vue 不常见操作
2021-05-09