标签: 树的直径

  • MOCK CSP-S 20220302 D – Trees 题解转录

    考虑一棵无根树的生成方式:需要决定一个好的顺序从而达到不重不漏地生成所有 $n$ 个点的无根树。

    类似有向无环图的拓扑排序,可以定义一种无根树的“拓扑排序”:每一轮将当前的叶子删去。这样可以很容易算出直径。设删除的轮数为 $r$,则当最终剩余一个孤点时,直径 $d=2r$,否则直径 $d=2r-1$。为了生成无根树,我们考虑进行逆操作,在当前的树上加叶子。在此之前,为了不重不漏地对无根树进行表示,我们考虑如下的唯一表示方法:设 $\text{dis}(x)$ 为节点 $x$ 在添加叶子过程中第几轮被添加上树的。对于$S=\{x\mid \text{dis}(x)=\text{const}\}$(也即同一层的节点),显然两棵有标号无根树同构但标号不同,当且仅当每个上述节点$x$的叶子节点的标号集合不同。我们总是将 $x$ 标号小的先行添加为其儿子。这样就不会出现因“两棵树本身同构,子节点编号集合相同导致重复计数的问题”。同时,为了方便、准确地计算,我们严格规定,新加入的 $k$ 个叶子节点在新树上就是全部的叶子节点。也即在旧树上的所有叶子节点在新树上至少有一个儿子。 (更多…)

  • 洛谷题库 P3304 [SDOI2013]直径 题解与思路重现

    洛谷题库 P3304 [SDOI2013]直径

    想看正解请直接跳过文章前半段。

    不知道到底错没错的错解

    这是一道树的直径的必经边问题。

    单单求树的直径是非常简单的。可以通过两次DFS/BFS或一次树形DP完成$\mathrm{O}(N)$的求解。显然,树的直径长度唯一,但构成该长度的链的方案可能不唯一。

    (更多…)