Solution
线段树分治, 然后直接在线段树上dfs, 在进入/回溯的过程中维护并查集的merge/split.
对于split操作, 可以在merge时按秩合并, 然后利用栈记录, split时恢复即可.
Code
#include #include #include #include #include #include #include
ee[msz*4];#define ls(p) ((p)<<1)#define rs(p) ((p)<<1|1)void insert(int v,int l,int r,int rt,int rl,int rr){ if(l<=rl&&rr<=r){ee[rt].push_back(v);return;} int mid=(rl+rr)>>1; if(l<=mid)insert(v,l,r,ls(rt),rl,mid); if(mid