题解:ABC394F - Alkane
题目描述
给定一棵包含 \(N\) 个顶点的无向树 \(T\)。顶点编号为 \(1, 2, \ldots, N\),第 \(i\) 条边连接顶点 \(A_i\) 和顶点 \(B_i\)。
定义满足以下两个条件的图为烷烃:
- 该图是一棵无向树
- 所有顶点的度数为 \(1\) 或 \(4\),且至少存在一个度数为 \(4\) 的顶点
请判断 \(T\) 中是否存在满足烷烃定义的子图。若存在,求此类子图的顶点数的最大值;否则输出 \(-1\)。
输入格式
输入通过标准输入按以下格式给出:
\(N\)
\(A_1\) \(B_1\)
\(A_2\) \(B_2\)
\(\vdots\)
\(A_{N-1}\) \(B_{N-1}\)
输出格式
若存在满足烷烃定义的子图,输出其顶点数的最大值;否则输出 \(-1\)。
输入输出样例 #1
输入 #1
9
1 2
2 3
3 4
4 5
2 6
2 7
3 8
3 9
输出 #1
8
输入输出样例 #2
输入 #2
7
1 2
1 3
2 4
2 5
3 6
3 7
输出 #2
-1
输入输出样例 #3
输入 #3
15
8 5
2 9
1 12
6 11
9 3
15 1
7 12
7 13
10 5
6 9
5 1
1 9
4 5
6 14
输出 #3
11
说明/提示
约束条件
- \(1 \leq N \leq 2 \times 10^5\)
- \(1 \leq A_i, B_i \leq N\)
- 输入的图是一棵无向树
- 所有输入值为整数
样例解释 1
选取顶点 \(1, 2, 3, 4, 6, 7, 8, 9\) 及边 \((1,2)\)、\((2,3)\)、\((3,4)\)、\((2,6)\)、\((2,7)\)、\((3,8)\)、\((3,9)\) 构成的子图满足烷烃条件。其中顶点 \(2\) 和顶点 \(3\) 的度数为 \(4\),其余顶点度数为 \(1\),因此顶点数的最大值为 \(8\)。
Solution
树是连通的,从任意结点出发都能访问所有结点,而题目要求至少有一个度数为 \(4\) 的结点,所以我们不妨找一个度数为 \(4\) 的结点先当做根。
定义 \(dp_u\) 为以 \(u\) 为根的最大烷烃大小,\(T\) 为给定的树,\(u\) 为树中的一个结点,\(children_u\) 为 \(u\) 的子结点集合。
因为我们要使结点数尽量多,所以要贪心地取答案最大的几个子结点的答案。
设 \(u\) 的子节点集合为 \(\operatorname{children}(u)\),\(k = |\operatorname{children}(u)|\)。
将 \(\{ dp[v] \mid v \in \operatorname{children}(u) \}\) 从大到小排序,得到 \(s_1 \ge s_2 \ge \cdots \ge s_k\)。
定义分段函数 \(f(k)\):
则:
对于每个节点 \(u\),考虑它作为根结点的情况:
定义分段函数 \(g(k)\):
则答案:
其中 \(k = |\operatorname{children}(u)|\)。
dfs 一下就行。

浙公网安备 33010602011771号