P4395 [BOI2003] Gem 气垫车

原题链接:P4395 [BOI2003] Gem 气垫车

题目描述

给出一棵树,要求你为树上的结点标上权值,权值可以是任意的正整数

唯一的限制条件是相邻的两个结点不能标上相同的权值,要求一种方案,使得整棵树的总价值最小。

输入格式

先给出一个数字 $N$ ,代表树上有 $N$ 个点, $N<=10000$ 。

下面 $N-1$ 行,代表两个点相连。

输出格式

最小的总权值。

样例 #1

样例输入 #1

10 
7 5 
1 2 
1 7 
8 9 
4 1 
9 7 
5 6 
10 2 
9 3

样例输出 #1

14

img1

提示

本题已经添加数据,但考虑到题目年代较为久远(毕竟是2003年的BOI了)以及洛谷神速评测姬,将此题时限修改为500ms。


题解

这题并不是双颜色染色问题那么简单,不妨考虑如下结构:

​ $Tree:\ 一个节点(点权为\ 2)有三个子节点(点权都为\ 1)$

若交换父亲与儿子的点权,则增量为 $2$ : $(1+2+2+2)-(2+1+1+1)=2$ ;

考虑父亲的父亲的变化(考虑父亲有多个这样的子树限制):$3\Rightarrow 2$ ,增量为 $-1$ ;

上述总的增量为正,其他子树同理可以变换,因此最大值的最小值随着 $n$ 的变化而变化,大致为 $m=log2(n)$ (未证明)。

于是问题转变为了多颜色染色问题,颜色总数不超过 $m$ 。

代码