AcWing 846. 树的重心

简介: 笔记

AcWing 846. 树的重心


给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。


请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。


重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。


输入格式

第一行包含整数n,表示树的结点数。


接下来n-1行,每行包含两个整数a和b,表示点a和点b之间存在一条边。


输出格式

输出一个整数m,表示重心的所有的子树中最大的子树的结点数目。


数据范围

7.png

输入样例

9
1 2
1 7
1 4
2 8
2 5
4 3
3 9
4 6

输出样例:

4


代码

#include
#include
#include
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair PII;
const int N = 1e5 + 10;
int ans = 0x3f3f3f3f;
int n;
vectorvec[N];
int vis[N];
int dfs(int now) {
  vis[now] = 1;
  int sum = 1, res = 0;
  //res 剩余连通块中点数的最大值
  //sum 当前节点的子树点数再加上自己的点数
  for (int i = 0;i < vec[now].size();++i) {
    if (!vis[vec[now][i]]) {
      int s = dfs(vec[now][i]);//一个子树的大小
      res = max(res, s);//所有子树大小的最大值
      sum += s; //所有子树再加上根节点的大小
    }
  }
  res = max(n - sum, res);//父节点子树大小
  ans = min(ans, res); // 最大子树的最小值
  return sum;
}
int main() {
  cin >> n;
  for (int i = 0;i < n - 1;++i) {
    int u, v;
    cin >> u >> v;
    vec[u].push_back(v);
    vec[v].push_back(u);
  }
  dfs(1);
  cout << ans << endl;
}


目录
相关文章
|
Ubuntu 安全 网络安全
|
11月前
|
算法
3D打印新突破!曼大等提出DQN多样化图形路径规划器:锐角转弯降低超93%,热变形减少25%
【10月更文挑战第28天】曼彻斯特大学等机构的研究人员提出了一种基于深度Q网络(DQN)的3D打印路径规划器,能够高效处理多样化图形结构。该规划器在多个应用中表现出色,包括线框打印、连续纤维打印和金属打印,显著提高了打印质量和效率。然而,其复杂性和可扩展性仍需进一步优化。论文链接:https://arxiv.org/pdf/2408.09198
141 6
带你读《2022技术人的百宝黑皮书》——全景封面视频生成技术在淘宝的应用(14)
带你读《2022技术人的百宝黑皮书》——全景封面视频生成技术在淘宝的应用(14)
136 0
|
人工智能 算法 前端开发
|
前端开发 JavaScript API
前端异步(async)解决方案(所有方案)(一)
前端异步(async)解决方案(所有方案)
275 0
前端异步(async)解决方案(所有方案)(一)
|
机器学习/深度学习 人工智能 自然语言处理
机器学习应该如何入门?
机器学习应该如何入门?
|
Java C++
18、JAVA入门——接口
18、JAVA入门——接口
186 0
18、JAVA入门——接口
leetcode第19题
上边我们遍历链表进行了两次,我们如何只遍历一次呢。 看了 leetcode 的讲解。 想象一下,两个人进行 100m 赛跑,假设他们的速度相同。开始的时候,第一个人就在第二个人前边 10m ,这样当第一个人跑到终点的时候,第二个人相距第一个人依旧是 10m ,也就是离终点 10m。 对比于链表,我们设定两个指针,先让第一个指针遍历 n 步,然后再让它俩同时开始遍历,这样的话,当第一个指针到头的时候,第二个指针就离第一个指针有 n 的距离,所以第二个指针的位置就刚好是倒数第 n 个结点。
136 0
leetcode第19题
|
弹性计算 安全 网络安全
阿里云服务器选购思路参考(新手用户参考)
这几年,云计算发展得如火如荼,越来越多的用户将自己的业务从传统的虚拟主机、VPS、物理服务器等产品迁移到云上,特别是很多企业,有了云计算赋能,可以更加专注于企业自身的业务了。当然,每一个第一次购买阿里云服务器的客户,对云服务器或多或少都有一点点陌生的,云服务器的购买不必虚拟主机、VPS、物理服务器等传统产品。
阿里云服务器选购思路参考(新手用户参考)