题解 [ARC093E] Bichrome Spanning Tree
萌萌题。
先将边按边权排序,求出最小生成树。
先考虑最小生成树权值为 $X$ 的情况,严格来说是不更换最小生成树的边的情况,即保证最小生成树的边不全是同色即可,方案数为 $(2^{n-1}-2)\times 2^{m-n+1}$。
接下来考虑更换最小生成树的边的情况,考虑什么时候最小生成树取不到,是不是最小生成树的所有边都染了同个颜色?因为可以染黑色或白色,答案要乘 $2$。不妨设其染成白色。
然后考虑有两种颜色的最小生成树,发现一个性质,即黑色边最多仅有一条,因为每次黑色边 $(u,v)$ 的加入,要减去原最小生成树上的 $u\to v$ 路径上最大边权,再加上 $w(u,v)$,因为 $(u,v)$ 本身不在最小生成树上,所以加入它肯定不优,于是只需一条黑边即可。
所以这个问题只需要对于每条不在树上的边,求一下加入它的最小生成树并判一下是否等于 $X$ 即可。
按每条边加入后的最小生成树权值排序,对于排序后的非树边 $(u_i,v_i)$,若加入它后的最小生成树权值为 $X$,其可以成为答案,但需保证前 $i-1$ 条边不能被染黑,否则异色最小生成树就不会是包含 $(u_i,v_i)$ 的,所以方案数为 $2\times2^{m-n+1-i}$。
时间复杂度 $O(n\log n)$。

浙公网安备 33010602011771号