题意简述
mex(S)表示集合S中没有出现的最小自然数。给定一个n个点m条边的带权无向图,求生成一颗树,使得边权集合的mex值最小。
n<=1e6,m<=2e6。边权范围是1e5。
思路
暴力思路:检验一个值x,把边权不等于x的边权加入,判断是否能生成树
小小优化:先把边按边权排序。然后用分治法,$calc(l,r)$表示:边权在$[l,r]$之间的边没有加入。每次添加$[l,mid]$求$[mid+1,r]$,添加$[mid+1,r]$求$[l,mid]$,递归求解,即珂。可撤销并查集维护。固定范围内的边权,显然具有单调性。传参数的时候再传一个单调指针。这样就不会在找边上浪费时间。
时间复杂度$O(nlogmlogw)$。然鹅完全跑不满,所以能过。
代码
1 |
|