题意:给出一颗有n个结点的无根树,有k种颜色,要给每个点染一种颜色,对于每种颜色的点所形成的连通块,构成的边集,求最大交集
思路:我们直接考虑每一条边的贡献,对于每一条边,如果他的两端,都有大于等于 k k k个点,那么一定有一种染色方式存在使得这条边在 k k k个集合中存在。所以问题转化成,枚举每一条边,判断他的两端是否各有大于等于 k k k个点,这个问题就是树形 d p dp dp裸题,跑两遍 d f s dfs dfs即可。
代码
题意:给出一颗有n个结点的无根树,有k种颜色,要给每个点染一种颜色,对于每种颜色的点所形成的连通块,构成的边集,求最大交集
思路:我们直接考虑每一条边的贡献,对于每一条边,如果他的两端,都有大于等于 k k k个点,那么一定有一种染色方式存在使得这条边在 k k k个集合中存在。所以问题转化成,枚举每一条边,判断他的两端是否各有大于等于 k k k个点,这个问题就是树形 d p dp dp裸题,跑两遍 d f s dfs dfs即可。
代码