当前位置: 首页 > news >正文

树的重心(邻接表)

image

输入样例:

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

期望输出:

4

代码实现:

#include<bits/stdc++.h>
using namespace std;const int N =1e5+10 , M=2*N;int n,m;
int h[N],e[M],ne[M],idx;
bool vis[N];
int ans=N ;void add(int a,int b)//插入一条a指向b的边
{e[idx]=b;ne[idx]=h[a];h[a]=idx++;
}int dfs(int u)//u代表的是第几个点
{vis[u]=1;int sum = 1,res =0; //sum 为当前子树的大小,res为把这一点删除后的连通块的最大值for(int i=h[u];i!=-1;i=ne[i]){int k=e[i];if(!vis[k]){int s = dfs(k); //当前子树的大小res = max(res,s);//看看所有子树哪个更大sum +=s;//求自己为父节点树的大小}}res = max(res,n-sum); //看看删除这个点的其他部分与最大子树哪个大ans = min(ans,res);//找到最小的答案return sum;
}int main()
{cin>>n;memset(h,-1,sizeof(h));for(int i=0;i<n-1;i++){int a ,b;cin>>a>>b;add(a,b);add(b,a);//因为是无向图,所以要新建两条边}dfs(1);//从哪个点开始搜cout<<ans<<endl;
}

  

http://www.rkmt.cn/news/12163.html

相关文章:

  • 语音芯片怎样接? 语音芯片有哪些常见接口类型?
  • 详细介绍:2025华为杯A题B题C题D题E题F题选题建议思路数学建模研研究生数学建模思路代码文章成品
  • AtCoder Beginner Contest 424
  • ======================================分割线======================================
  • OpenLayers地图交互 -- 章节六:范围交互详解 - 实践
  • 游戏在高负载场景下,整机功耗控制在多少
  • 打印机状态错误,怎么恢复正常打印?
  • 牛客刷题-Day5
  • VonaJS多租户同时支持共享模式和独立模式
  • 实用指南:【C语言】统计二进制中1的个数:三种方法的比较与分析
  • vite-vue3 项目优化首屏加载速度
  • 深入解析:小九源码-springboot050-基于spring boot的苏蔚家校互联管理系统
  • 各种软件的官方文档和安装包下载地址记录
  • 基于导频的OFDM系统的信道估计(使用LS估计算法)
  • 快递100
  • python+springboot+uniapp微信小代码“美好食荐”框架 美食推荐 菜谱展示 用户互动 评论收藏框架
  • 领嵌iLeadE-588网关AI边缘计算盒子一键部署二次开发
  • 深入解析:PyTorch 神经网络工具箱核心内容
  • 【英语启蒙动画合集】0基础宝宝必看的动画,超全!直接下载~
  • AI 自动化智能体训练营 | 借助人工智能提升工作效率,打造自己的智能体工作流
  • 「Java EE开发指南」用MyEclipse开发的EJB开发工具(一)
  • MX-X21
  • 深入解析:博客SEO优化实战:从Google到百度,一套可复制的排名增长SOP
  • 完整教程:Prompt Tuning提示词微调工程
  • 集训队作业1——qoj#11722
  • US$59 EGS ISN Authorization for CGDI Prog BMW MSV80 Key Programmer
  • 《IDEA 2025破解 长效使用指南:2099 年有效期配置实战之JetBrains全家桶有效》​
  • 鸿蒙自定义弹出框响应式更新数据
  • 多机动模型PHD滤波算法
  • 时序InSAR形变结果合并操作说明 - ENVI