有一颗 n 个结点的无根树,m 种颜色以及 k 条限制,每条边有两种状态:选中与未选中,若干条选中的边把整棵树分为若干个联通块。
每个点有 m 种颜色之一的颜色,要求同一联通块内任意两点颜色不同;每条限制形如 (u,v) ,表示结点 u 与结点 v 必须在同一联通块中。
选择一些边并给每个结点染色,要求满足上述所有限制,求方案数对某个大质数取模(先按照 109+7)的结果。n,m,k≤3×105。
目前这边的想法是虚树给边打标记+借助排列数和逆元进行二维树形DP(第二维是当前联通块大小,转移时按照边的标记情况分类,给儿子状态乘上排列数逆元,求和,然后乘上排列数)加上DSU ON TREE。请问各位:
1.该想法有没有假,以及假了的话有没有时间复杂度在 O(nlogn) 以内的解法;这边已经退役了,最近写题写傻了,脑子不太灵光......
2.有没有实现上更为简单的算法,时间复杂度可以放宽到小常数 O(nn);
3.有没有理论最劣时间复杂度更优的解法,常数小也算。
提前感谢各位解答。