题目大意:
给出一个由n个点和n - 1条边构成的树,每次可以摧毁掉一个度数为偶数的点,问是否存在一个摧毁的顺序使得所有点都能被摧毁掉。
解题思路:
先说结论:当n为偶数时,总会存在度数为奇数的点无法被摧毁掉(很明显的)。当n为奇数时,答案总是存在的(证明略)。
对于答案存在的情况,我们每次都摧毁靠近叶子结点的度数为偶数的结点,因为如果这个点不摧毁,而先摧毁了其父结点,那它的度数就变为奇数,并且叶子结点度数均为1,它们就无法消除了。
Mycode:
1 |
|
快乐咸鱼每一天,咸鱼咸鱼咸~
给出一个由n个点和n - 1条边构成的树,每次可以摧毁掉一个度数为偶数的点,问是否存在一个摧毁的顺序使得所有点都能被摧毁掉。
先说结论:当n为偶数时,总会存在度数为奇数的点无法被摧毁掉(很明显的)。当n为奇数时,答案总是存在的(证明略)。
对于答案存在的情况,我们每次都摧毁靠近叶子结点的度数为偶数的结点,因为如果这个点不摧毁,而先摧毁了其父结点,那它的度数就变为奇数,并且叶子结点度数均为1,它们就无法消除了。
1 | #include <cstdio> |
WeChat Pay
Alipay