int Unite(const int arr,int u,int v){
int a=Find(arr,u),b=Find(arr,v);
if(tree[a].ver==tree[b].ver)return arr;
if(tree[a].deep>tree[b].deep)swap(a,b);
int pt=PerModify(arr,tree[a].ver,tree[b].ver);
if(tree[a].deep==tree[b].deep){
return Add(pt,tree[b].ver);
}
return pt;
}
这里当树高相等时还要再新建一个版本
不能像注释里直接修改
因为这里的点不是新造出来的部分,直接修改会连着把其他版本的节点修改掉
之前潜意识里新开的版本随便改,以后注意了
申必错误熬了我三天夜才找出来