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

G008 【模板】树的重心 带权重心 DFS P1670 P1395 P2986 洛谷

P1670 [USACO04DEC] Tree Cutting S - 洛谷 树的重心模版,题面意思即是定义二。

P1395 会议 - 洛谷 树的重心模版。

P2986 [USACO10MAR] Great Cow Gathering G - 洛谷 树的带权重心。

树的重心有如下三种定义,求出来的点是一样的

  1. 以某个节点为根时,最大子树的节点数最少,那么这个节点是重心
  2. 以某个节点为根时,每颗子树的节点数不超过总节点数的一半,那么这个节点是重心
  3. 以某个节点为根时,所有节点都走向该节点的总边数最少,那么这个节点是重心

补充性质:

  1. 一棵树最多有两个重心,如果有两个重心,那么两个重心一定相邻
  2. 如果树上增加或者删除一个叶节点,转移后的重心最多移动一条边
  3. 如果把两棵树连起来,那么新树的重心一定在原来两棵树重心的路径上
  4. 树上的边权如果都为正数,不管边权怎么分布,所有节点都走向重心的总距离和最小

最常用的求重心的方法为第一个和第二个。

定义一具体代码为

sz = [0] * (n + 1)
core = []  # 树的重心数组
MX = infdef dfs(u, fa=-1):nonlocal core, MXsz[u] = 1mx = 0for v in g[u]:if v != fa:dfs(v, u)sz[u] += sz[v]mx = Max(mx, sz[v])mx = Max(mx, n - sz[u])if mx < MX:  # 定义一MX = mxcore = [u]  # 不断更新最大子树的最小节点数elif mx == MX:core.append(u)
dfs(1)

定义二具体代码为

sz = [0] * (n + 1)
ans = []def dfs(u, fa=-1):sz[u] = 1mx = -1for v in g[u]:if v != fa:dfs(v, u)sz[u] += sz[v]mx = Max(mx, sz[v])mx = Max(mx, n - sz[u])if mx <= n // 2:  # 定义二ans.append(u)
dfs(1)

在树上,如果存在一点使得 \(\sum(dist(u,v)\times w_v)\) 最小的节点,就是树的带权重心。这是树的重心的一个很重要的性质。

这里使用方法二求解问题二。

sz = [0] * (n + 1)
core = 0def dfs(u, fa=-1):nonlocal coresz[u] = weight[u - 1]  # 这里不再是默认的1了,而是有自己的点权mx = 0for v, _ in g[u]:  # 忘记节点附带了边权,没有解包if v != fa:dfs(v, u)sz[u] += sz[v]mx = Max(mx, sz[v])mx = Max(mx, s - sz[u])if mx <= s // 2:  # 定义二core = udfs(1)  # 忘记调用函数了
http://www.jsqmd.com/news/425417/

相关文章:

  • 行走人间・第二篇:生活
  • 基于springboot的健身服务管理系统
  • Web 词汇表
  • 3mm 厚层 CT 冠脉配准踩坑实录:从血管碎裂、空间漂移到 Elastix 完美对齐
  • 关于arduino 库文件的标准结构
  • 用ESP32打造动态网页仪表盘
  • flutter: 用getxservice管理状态
  • 感受一下谷歌的语义识别能力 和 古老的每个关键词单独做一个站的玩法
  • 2026年诚信的景观灯光护栏厂家优质推荐 - 品牌鉴赏师
  • 【claude】拒绝为美军提供“黑暗版”Claude,Anthropic成首个被五角大楼列入“供应链风险”的美国AI公司
  • 碎碎念
  • 正确理解C++中的值语义:move
  • 2026年防爆声级计制造厂推荐,防爆认证噪声监测专业厂商 - 品牌鉴赏师
  • 华为OD技术面八股文_C++_01
  • 分布式系统高并发:缓存策略与限流方案实践
  • P15546 学习笔记
  • 【二分】BISHI85 【模板】整数域二分
  • 《深度解析!Agentic AI在智能制造潜力,提示工程架构师视角揭秘》
  • AI原生应用开发:Llama模型的10个高级用法
  • SVG Stroke 属性详解
  • 数据仓库监控体系搭建:从ETL到查询全链路监控
  • SQL ROUND() 函数详解
  • 解读大数据领域结构化数据的管理模式
  • 华为OD机考双机位C卷 - Alice的安全旅行 (Java Python JS GO C++ C)
  • 基于双层优化与二阶锥松弛模型的电动汽车时空调度策略:在MATLAB环境中的配电网研究
  • 从MVP到规模化:AI原生应用的成长路径
  • 2026年最受欢迎的三亚海鲜餐厅TOP5推荐,带你畅享鲜美海味盛宴
  • Aspose.Total for .NET 2026全系列来了,官方包
  • day100(3.1)——leetcode面试经典150
  • 2026年三亚湘菜餐厅对比推荐,必尝五大经典美味,让你领略湘味魅力