Codeforces Round #746 (Div. 2)C. Bakry and Partitioning


首先计算所有结点的异或和记为s,特判当s=0时,我们可以任意删一条边,使其成为两个异或和相等的连通块
然后如果s不为0,那么如果我们可以将这棵树分成偶数块相等的连通块,那么s一定为0,所以答案有解一定是分成奇数块连通块,这时我们可以通过合并其中相邻三块区域,将其连通块数量减2,直至连通块
只剩3块,所以如果有答案,那么答案可以变成只剩两块或三块,然后我们通过dfs统计异或和为s的连通块数量,如果数量大于等于2,而且k大于等于3,则答案有解否则答案无解;

posted @ 2021-10-14 22:50  DurKui  阅读(56)  评论(0)    收藏  举报