利用 DFS 树解决 ”2 选 1“ 的构造题

CF1391E Pairs of Pairs
CF1103C Johnny Solving
本题一般是这个不行那个就可以。对于第一题,先跑个 dfs 树,若树的深度 \(\geqslant \lceil \frac n 2 \rceil\),那么一定可以找到一条路径。(当然直接找直径也可以)
否则 深度 \(< \lceil \frac n 2 \rceil\),注意到 \(n-深度 \geqslant \lceil \frac n 2 \rceil\)。想到每一层都可以舍弃一个点。于是做法便是:每一层的点任意组合。正确性:这样点对之间没有边,每一点也只会有一个返祖边连向那一层的点,于是一个点对向其他点对连的边数就 \(\leqslant 2\)

第二题就同理很显然了。但这个时候我们更要沉着冷静。若树的深度 \(\geqslant \lceil \frac n k \rceil\),直接找路。否则,树的深度 \(< \lceil \frac n k \rceil\),根据鸽巢原理,一层中最大的点数最少也有 \(\lceil \frac n {\lceil \frac n k \rceil -1} \rceil \geqslant k\)(?)个,于是叶子节点最少也有 \(k\) 个,我们又看到每个环都必须要有独一无二的点,想到叶子拿来构环。于是稍微画画图发现有 \(3\) 种及以上不同的环可以选(因为度数 \(\geqslant 3\)),讨论一下发现一定可以选到满足要求的环。有个坑点,找祖先时不能找出 \(fa\),这样有可能会找不到环!!!

posted @ 2022-06-28 15:47  Saintex  阅读(27)  评论(0编辑  收藏  举报