乐于分享
好东西不私藏

从GESP六级真题《货物运输》说起:提高组必备的树上路径思维

从GESP六级真题《货物运输》说起:提高组必备的树上路径思维

一道GESP六级题,背后是提高组必须掌握的树论思维


一、这道题到底在考什么?

GESP 2025年9月六级真题《货物运输》讲的是这样一个问题:

A国有 n 座城市,1号城市是首都,城市由 n-1 条双向道路连接。满载货物的车队从首都出发,需要经过所有城市,最后可以不返回首都。每条路可以走多次,求最小总路程。

这道题在GESP六级中属于压轴题,但它的核心解法其实非常简洁:

答案 = 所有边权之和 × 2 - 从根出发到最远节点的距离

很多同学拿到这道题第一反应是“贪心选最短边走”,但很快就发现不对——树的结构决定了某些路你绕不过去,必须走。


二、为什么公式成立?

想象你从根出发,要到达每一个节点。

由于树没有环,要去到任何一个子树,你必须沿着那条唯一的路径走下去,然后再走回来——除非你最后选择停在那条路径的终点。

每一条边至少要被走两次吗?

不一定。如果最后停在某个节点,从根到这个节点的路径上的每一条边都只需要走一次(去程),不需要走回程。其他所有边仍然要走两次。

为了让总路程最小,你会选择哪条路径只走一次?

显然,选择从根出发最长的那一条路径,这样省掉的路程最多。

这就是公式 sum * 2 - maxDist 的来源。


三、从这道题看入门组到提高组的思维跃迁

这道题虽然出现在GESP六级,但它背后涉及的思想,恰恰是提高组树论题目的核心。

我们先来看这道题在入门组和六级之间的“身份”定位。

组别
树上问题考查方式
典型题目
入门组(CSP-J
树的遍历、二叉树性质、简单DFS
二叉树遍历、求树的深度
GESP六级(过渡)
树上路径优化、一步结论推导
货物运输、树上漫步
提高组(CSP-S)
树上DP、直径、LCA、倍增
树网的核、赛道修建、天天爱跑步

GESP六级恰好卡在“会用DFS”和“会做树上决策”之间。

它不再满足于让你“遍历树”,而是要求你在遍历的基础上做最优化决策。从遍历到决策,这就是从入门组到提高组最核心的能力跨越。

货物运输这道题就是这种过渡的典型代表:

  • 你需要理解树上的路径结构
  • 你需要自己推导出“省掉最长路径”的贪心策略
  • 你还要意识到不能直接把每条边都乘以2

但它的代码实现仍然很简单——DFS一遍求最远距离。这是典型的“思维难度>代码难度”的提高组出题风格。


四、延伸:这棵树还能省掉哪条路?

如果你觉得“省掉最长路径”的直觉已经掌握了,那我们可以再往前推一步:

如果起点不是根节点呢?

场景
公式
关键点
从根出发,必须返回
sum * 2
所有边走两次
从根出发,不用返回(本题)
sum * 2 - maxDist
省掉从根出发的最长路径
从任意点出发,不用返回
sum * 2 - diameter
省掉整棵树的直径
从指定起点到指定终点,必须经过某些点
路径长度 + 分支×2
先找出必经路径,再处理分支

前两种在GESP六级或入门组扩展中可能出现,后两种是提高组常客。这一条路径,从“省掉最长路径”到“省掉树的直径”,本质上是在问同一个问题:哪条路可以只走一次?


五、提高组树论方向扩展练习

如果货物运输这道题你已经吃透了,以下几道题就是下一步的方向:

1. 树的直径

题意:求树中最长路径的长度,以及求树的中心节点。

树上的最长路径不一定是根出发的,它是任意两点之间的最长距离。货物运输中从根出发到最远节点和整棵树的直径之间的区别,就是入门组到提高组的第一个台阶。

2. 树上DP

题意:在树上做动态规划,比如“没有上司的舞会”,选择一些节点使权值最大,且不能选择相邻节点。

这是提高组最常见的树论题型之一,本质是“在DFS遍历的过程中维护状态”。

3. LCA(最近公共祖先)与树上路径

题意:求树上任意两点的距离,或者快速判断某点是否在某个路径上。

这类题目在提高组中是高频考点,也是处理树上路径问题的利器,通常结合倍增法预处理。NOIP2015的《运输计划》和NOIP2018的《旅行》都是这类题目的代表。


六、结语

《货物运输》这道题的代码很短——一个DFS求最远距离,一句公式输出答案。

但它的思维链条很长:

  • 理解:树上的路径是唯一的,每条边在遍历中至少要走两次

  • 决策:最后一条路径可以不返回,选择最长的来省路程

  • 推广:如果把根换成任意起点呢?如果必须经过指定节点呢?

一道GESP六级的题目,背后是提高组的必考思维。如果孩子能把这道题的逻辑讲清楚、把公式的来龙去脉推导明白,那么恭喜你——他已经在从“会用工具”向“理解原理”迈进了。

相关学习资料