实用指南:洛谷 P1395:会议 ← 树的重心 + 链式前向星

news/2026/1/17 22:39:49/文章来源:https://www.cnblogs.com/ljbguanli/p/19497300

实用指南:洛谷 P1395:会议 ← 树的重心 + 链式前向星

【题目来源】
https://www.luogu.com.cn/problem/P1395

【题目描述】
有一个村庄居住着 n 个村民,有 n-1 条路径使得这 n 个村民的家联通,每条路径的长度都为 1。现在村长希望在某个村民家中召开一场会议,村长希望所有村民到会议地点的距离之和最小,那么村长应该要把会议地点设置在哪个村民的家中,并且该距离总和最小是多少?若有多个节点都满足条件,则选择节点编号最小的那种点。

【输入格式】
第一行,一个数 n,表示有 n 个村民。
接下来 n-1 行,每行两个数字 a 和 b,表示村民 a 的家和村民 b 的家之间存在一条路径。

【输出格式】
一行输出两个数字 x 和 y。
x 表示村长将会在哪个村民家中举办会议。
y 表示距离之和的最小值。​​​​​​​

【输入样例】
4
1 2 
2 3 
3 4 

【输出样例】
2 4

【数据范围】
对于 70% 数据 n≤10^3。
对于 100% 信息 n≤5×10^4。

【算法分析】
● “树的重心”性质
性质1‌:某节点是重心等价于其最大子树大小不大于整棵树大小的一半。
性质2‌:
树至多有两个重心,若有两个重心则它们相邻,且树的节点数为偶数(可被划分为大小相等的两个分支,每个分支含一个重心)。
性质3:
树中所有节点到某点的距离和中,到‌重心‌的距离和是最小的;若有两个重心,树中所有节点到它们的距离和相等。反之,到某点的距离和最小的点一定是重心。

●“树的重心”求解过程
若树的示意图如下所示,则依据定义分析“树的重心”求解过程如下。

删除结点 1,产生的两个连通块中结点数分别为 2、5,最大值为 5;
删除结点 2,产生的两个连通块中结点数分别为 1、6,最大值为 6;
删除结点 3,产生的两个连通块中结点数分别为 3、4,
最大值为 4
删除结点 4,产生的一个连通块中结点数分别为 7,最大值为 7;
删除结点 5,产生的四个连通块中结点数分别为 1、1、1、4,
最大值为 4
删除结点 6,产生的一个连通块中结点数分别为 7,最大值为 7;
删除结点 7,产生的一个连通块中结点数分别为 7,最大值为 7;
删除结点 8,产生的一个连通块中结点数分别为 7,最大值为 7。
综上,可知 8 个最大值中的最小值为 4,但有两个。也就是说,给出的树有两个重心,分别为结点 3、结点 5。


【算法代码】

#include 
using namespace std;
const int N=5e4+5;
const int M=N<<1;
int h[N],e[M],ne[M],idx;
int cnt[N];
int n,dis,cr; //core
int imin=INT_MAX;
void add(int a,int b) {e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs1(int u,int fa) { //find corecnt[u]=1;int rem=0; //remnantfor(int i=h[u]; i!=-1; i=ne[i]) {int j=e[i];if(j==fa) continue;dfs1(j,u);cnt[u]+=cnt[j];rem=max(rem,cnt[j]);}rem=max(rem,n-cnt[u]);if(rem>n;for(int i=1; i>a>>b;add(a,b),add(b,a);}dfs1(1,-1);dfs2(cr,-1,0);cout<





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/155821553
https://blog.csdn.net/hnjzsyjyj/article/details/155837166
https://www.cnblogs.com/triwa/p/19339324
https://blog.csdn.net/hnjzsyjyj/article/details/119912125
https://www.cnblogs.com/hackerchef/p/18750178


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1174973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

驾驭AI巨兽:大模型微调超参数完全解读,从新手到调参高手

引言:为什么微调和超参数如此重要? 在当今AI时代,大模型(LLM)已成为强大的基础能力。但“通用”往往意味着“不够专精”。微调的核心价值在于** specialization**:让一个通用模型适配到你的特定领域、任务和风格…

《数字图像处理》第 1 章 绪论

前言大家好&#xff01;今天开始我们系统学习《数字图像处理》的第一篇内容 —— 绪论。作为整个数字图像处理知识体系的开篇&#xff0c;这一章主要帮大家建立对数字图像处理的整体认知&#xff0c;包括它的定义、起源、应用场景、基本流程和系统组成。全文结合实战代码&#…

《数字图像处理》第 2 章 - 数字图像基础

前言大家好&#xff01;今天给大家梳理《数字图像处理》第 2 章的核心内容 —— 数字图像基础。这一章是整个数字图像处理的入门基石&#xff0c;涵盖了从视觉感知到图像数字化、像素关系、数学工具等核心知识点。全文搭配可直接运行的 Python 代码、效果对比图和详细注释&…

2026年目前优秀的滤筒除尘器制造厂口碑推荐,催化燃烧/除尘器/沸石转轮一体机/旋风除尘器,除尘器制造企业排行 - 品牌推荐师

行业洞察:滤筒除尘器市场技术升级与需求分化趋势 当前,工业粉尘治理领域正经历技术迭代与需求分化的双重变革。随着国家“双碳”目标深化及环保标准趋严,传统除尘设备面临效率提升、能耗降低、智能化运维等核心挑战…

Linux第二次作业

1、文件查看:查看/etc/passwd文件的第5行2、文件查找 (1)在当前目录及子目录中&#xff0c;查找大写字母开头的txt文件(2)在/etc及其子目录中&#xff0c;查找host开头的文件2(3)在$HoME目录及其子目录中&#xff0c;查找所有文本文件(4)忽略文件名大小写查找a.txt3、查找文件/…

java-SSM313的校园快递快领服务系统vue-springboot

目录具体实现截图校园快递快领服务系统摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 校园快递快领服务系统摘要 该系统基于Java SSM框架&#xff08;SpringSpringMVCMyBatis&#xff09;与…

深度学习计算机毕设之基于python-CNN人工智能卷积神经网络训练识别不同颜色的裤子识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

深度学习毕设选题推荐:基于python-CNN-pytorch机器学习 训练识别苹果树叶病害识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【课程设计/毕业设计】基于python-CNN深度学习卷神经网络训练识别手势方向

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

java-SSM314的新闻发布系统带投稿-springboot

目录具体实现截图新闻发布系统概述技术架构与模块设计核心功能实现部署与优化应用价值系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 新闻发布系统概述 Java-SSM314新闻发布系统基于SpringBoot…

java-SSM315的师生交流答疑作业系统-springboot

目录具体实现截图系统概述核心功能技术架构创新点应用价值系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 系统概述 基于SpringBoot的师生交流答疑作业系统&#xff08;Java-SSM315&#xff09;…

【课程设计/毕业设计】基于深度学习python-CNN卷积神经网络训练识别不同颜色的裤子识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

详细介绍:当企业级前端遇见AI,我们如何重新定义开发效率

详细介绍:当企业级前端遇见AI,我们如何重新定义开发效率2026-01-17 22:22 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important…

华为OD机试双机位C卷 - 快递投放问题 (JAVA Python C++ JS GO)

快递投放问题 华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 200分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录&#xff5c;机考题库 算法考点详解 题目描述 有N个快递站点用字符串标识&#xff0c;某些站点之间有道路连接。 每个站点有…

【毕业设计】基于python-CNN深度学习训练识别手势方向

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

吐血推荐10个AI论文软件,研究生轻松搞定毕业论文!

吐血推荐10个AI论文软件&#xff0c;研究生轻松搞定毕业论文&#xff01; 论文写作的“救星”来了&#xff0c;AI 工具如何改变研究生的学术之路 在当今信息爆炸的时代&#xff0c;研究生们面对毕业论文的压力日益增大。从选题、开题到撰写、查重&#xff0c;每一个环节都充满…

基于STM32的智能家居环境监测与控制系统设计

基于STM32的智能家居环境监测与控制系统设计摘要本论文设计并实现了一种基于STM32F103C8T6单片机的智能家居环境监测与控制系统。系统通过集成多参数环境传感器&#xff0c;构建了完整的家居环境感知-决策-执行闭环&#xff0c;实现了对室内温湿度、烟雾浓度、一氧化碳、空气质…

深度学习计算机毕设之基于python-CNN深度学习机器学习训练识别手势方向

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

AI应用架构师必学:弹性扩展中的容错设计

AI应用架构师必学&#xff1a;弹性扩展中的容错设计 关键词&#xff1a;AI 应用架构、弹性扩展、容错设计、分布式系统、可靠性、可用性 摘要&#xff1a;本文深入探讨了 AI 应用架构师在弹性扩展场景下进行容错设计的关键要点。首先阐述了相关概念的基础&#xff0c;追溯其历史…

深度学习毕设选题推荐:基于python-CNN机器学习深度学习训练识别手势方向

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…