题目大意: 在$n$个带权点上维护两个操作: 1)在点$u,v$间连一条边: 2)询问点$u$所在联通块中权值第$k$小的点的编号,若该联通块中的点的数目小于$k$,则输出$-1$: 传送门 上周的模拟赛在一道线段树合并的题目上gg了,来学习一个. 对每一个联通块,我们维护一棵权值线段树.查询时,若左子树大小大于等于$k$进入左子树,否则进入右子树: 因为每棵线段树同构,所以对于任意两棵线段树可以进行合并操作: int merge(int x,int y){ if(!x)return y; if…