bzoj 3123
题意:小$Z$有一片森林,含有$N$个节点,每个节点上都有一个非负整数作为权值。初始的时候,森林中有$M$条边。
小Z希望执行$T$个操作,操作有两类:
Q x y k
查询点$x$到点$y$路径上所有的权值中,第$k$小的权值是多少。此操作保证点$x$和点$y$连通,同时这两个节点的路径上至少有$k$个点。L x y
在点$x$和点$y$之间连接一条边。保证完成此操作后,仍然是一片森林。
这题查询$k$小值点,显然主席树。
考虑怎么处理合并两棵树。我们想到了LCT。但是这题我们完全可以启发式合并。
每次合并两个集合,然后对小的集合重新算倍增、深度等
注意本题是合并的时候再建链,而不是先建链再合并,否则会合并很多次,造成数据重复
知识点:
1、加边要加双向边