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

题解:洛谷 P1395 会议

【题目来源】

洛谷: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

【算法标签】

《洛谷 P1395 会议》 #树的重心# #福建省历届夏令营#

【代码详解】

#include <bits/stdc++.h>
using namespace std;
const int N = 50005, M = N * 2;
int n, u, v, cnt[N], maxx[N], minn=1e9;
int h[N], e[M], ne[M], idx;
int root, ans;// 添加无向边
void add(int a, int b)
{e[idx]=b, ne[idx] = h[a], h[a]=idx++;
}// 深度优先搜索,计算子树大小和最大子树大小
void dfs(int u, int fa)
{cnt[u]=1;  // 当前节点自身for (int i=h[u]; i!=-1; i=ne[i])  // 遍历所有邻接点{int j = e[i];if (j==fa) continue;  // 跳过父节点dfs(j, u);  // 递归遍历子树cnt[u]+=cnt[j];  // 累加子树大小maxx[u] = max(maxx[u], cnt[j]);  // 更新最大子树大小}maxx[u]=max(maxx[u], n-cnt[u]);  // 考虑父节点方向的子树大小
}// 深度优先搜索,计算所有节点到重心的距离之和
void dfs2(int u, int fa, int dist)
{for (int i=h[u]; i!=-1; i=ne[i])  // 遍历所有邻接点{int j = e[i];if (j==fa) continue;  // 跳过父节点ans += dist+1;  // 累加距离(当前节点到子节点的距离是dist+1)dfs2(j, u, dist+1);  // 递归遍历,距离增加1}
}int main()
{memset(h, -1, sizeof(h));  // 初始化邻接表头指针cin >> n;  // 读入节点数// 读入边的信息,构建无向图for (int i=1; i<n; i++){cin >> u >> v;add(u, v), add(v, u);  // 添加双向边}// 第一次DFS,计算每个节点的子树信息和最大子树大小dfs(1, 0);// 寻找重心(最大子树大小最小的节点)for (int i=1; i<=n; i++){if (maxx[i]<minn)  // 找到更优的重心{root = i;  // 更新重心节点编号minn = maxx[i];  // 更新最小最大子树大小}}cout << root << " ";  // 输出重心节点编号// 第二次DFS,计算所有节点到重心的距离之和dfs2(root, 0, 0);cout << ans << endl;  // 输出距离之和return 0;
}

【运行结果】

4
1 2 
2 3 
3 4 
2 4
http://www.jsqmd.com/news/394607/

相关文章:

  • Claude Sonnet 4.6发布,操控计算机能力大幅提升,100万token上下文
  • 京东 e 卡闲置别浪费!可可收更安心,这样选最省心 - 可可收
  • 题解:洛谷 P3372 【模板】线段树 1
  • 研磨废水回用厂家怎么挑?2026年攻略来了,实验室废水处理/研磨废水回用(处理)/零排放清洗,研磨废水回用源头厂家找哪家 - 品牌推荐师
  • 题解:洛谷 P1099 [NOIP 2007 提高组] 树网的核
  • 闲置支付宝立减金别浪费!合规回收方法来了,新手也能轻松上手 - 可可收
  • Python3教程梳理
  • 题解:洛谷 P5908 猫猫和企鹅
  • 题解:洛谷 P5677 [GZOI2017] 配对统计
  • 2026沸石转轮一体机企业TOP榜:哪些品牌值得关注?催化燃烧/旋风除尘器/除尘器,沸石转轮制造厂家排行榜单 - 品牌推荐师
  • 瑞祥商联卡闲置不用?这样的合规回收方式,新手也能轻松上手 - 可可收
  • 2026年值得推荐的AVIF转WebP在线工具盘点(支持批量转换)
  • 微信立减金回收技巧:47%闲置率下,5招盘活你的“隐形财富” - 可可收
  • 2026年溴化锂中央空调选购指南:值得关注的公司,溴化锂冷水机组/二手溴化锂中央空调,溴化锂中央空调制造企业有哪些 - 品牌推荐师
  • PAM4相关概念
  • 2026年行业内评价高的调节阀厂商如何选,电液动盲板阀/蝶式止回阀/微阻缓闭止回阀/伸缩蝶阀,调节阀生产厂家哪家权威 - 品牌推荐师
  • 2026年中考体育训练新趋势:智慧体育制造企业深度解析,智能运动手环管理平台/握力测试仪,智慧体育生产厂家哪家好 - 品牌推荐师
  • 闲置分期乐购物额度用不上?教你安全高效回收,不浪费一分额度 - 可可收
  • 题解:洛谷 P1631 序列合并
  • 题解:洛谷 P4053 [JSOI2007] 建筑抢修
  • 题解:洛谷 P2161 [SHOI2009] 会场预约
  • 书籍-阿尔伯特·赫尔曼《亚洲古代地理学》
  • IndicEval A Bilingual Indian Educational Evaluation Framework for Large Language Models
  • 2026年上海有实力的宠物口腔医生口碑推荐榜,猫咪牙科/牙科专科/狗狗洗牙/狗口腔溃疡诊疗,宠物口腔医生性价比高的推荐 - 品牌推荐师
  • MultiCW A Large-Scale Balanced Benchmark Dataset for Training Robust Check-Worthiness Detection Mode
  • 题解:洛谷 P3368 【模板】树状数组 2
  • 2026年安徽评价好的家教机构选哪家,大学生家教/小学家教/全托一对一/全托补习班/师范家教/家教,家教机构电话 - 品牌推荐师
  • 题解:洛谷 P3374 【模板】树状数组 1
  • 题解:洛谷 P2085 最小函数值
  • 实用指南:FreeRTOS信号量