ICPC2020南京

A、B、C、D、I、J、M待更

鸽掉的:G(感觉不太好讲,如果有思路但具体细节不太清楚可以私信交流,毕竟我认为这题坑点很多)

D

很有意思的题目

首先\(n=3\)肯定是无解的,以下讨论\(n\ge 4\)的情况,也就是每个点能接受连两个点以上

定义:对于一个割点,其的割度为将其的邻边从图中删掉后,增加的连通块个数

结论:有解的充分条件是,不存在一个割点,使得其割度\(>\left\lfloor\frac{n}{2}\right\rfloor\)

证明显然

我们通过以下的方法证明这也是必要条件

首先随便搜出一棵树,若其不存在一个点度数\(>\left\lfloor\frac{n}{2}\right\rfloor\),则显然合法
否则,令该点为\(root_1\),令其为树根(显然树中最多存在一个这样的点)

我们遍历其他所有边,若其为树的横叉边,则我们可以将其加入树中,并删掉树上的一条边,使\(root_1\)的度数\(-1\)
直到\(root_1\)的度数\(=\left\lfloor\frac{n}{2}\right\rfloor\)

\(root_1\)的度数始终\(>\left\lfloor\frac{n}{2}\right\rfloor\),我们容易证明\(root_1\)的割度\(>\left\lfloor\frac{n}{2}\right\rfloor\)

现在判断树上此时是否存在点度数\(>\left\lfloor\frac{n}{2}\right\rfloor\),若不存在则显然合法
否则,令该点为\(root_2\),我们可以发现其与\(root_1\)相邻

证明:
假设其与\(root_1\)不相邻,令\(root_1\)在原树上的度数为\(d\)
\(root_2\)在原树上度数\(\le n-d-1\),现在的树是在原树基础操作了\(d-\left\lfloor\frac{n}{2}\right\rfloor\)
现在\(root_2\)的度数\(\le n-d-1+d-\left\lfloor\frac{n}{2}\right\rfloor=n-\left\lfloor\frac{n}{2}\right\rfloor-1\le \left\lfloor\frac{n}{2}\right\rfloor\)
\(root_2\)度数\(>\left\lfloor\frac{n}{2}\right\rfloor\)矛盾

我们以边\((root_1,root_2)\)为根,\(root_1\)的子树大小为\(\left\lfloor\frac{n}{2}\right\rfloor-1\)\(root_2\)的子树大小为\(n-\left\lfloor\frac{n}{2}\right\rfloor-1\)
(其实就是两棵菊花图拼在一起)

若存在一条边,其两端为\(root_2\)的子节点,我们可以将其加入树,使得\(root_2\)度数\(-1\)
若存在一条边,其一端为\(root_1\)的子节点,另一端为\(root_2\)的子节点,我们可以将其加入,使得\(roo_1,roo_2\)度数\(-1\)
若存在一条边,其一端为\(root_1\),另一端为\(root_2\)的子节点,我们可以将其加入,使得\(root_2\)度数\(-1\)

若这三类边均不存在,显然\(root_2\)的割度\(=\left\lfloor\frac{n}{2}\right\rfloor+1\)

posted @ 2020-12-23 16:15  Grice  阅读(235)  评论(0编辑  收藏  举报