核心:
void INIT(){
memset(par , -1 , sizeof(par));
return ;
}
int FIND(int i){
return par[i] == -1 ? i : par[i] = FIND(par[i]);
}
void UNION(int l,int r){
par[parr] = parl;
return ;
}
void INIT(){
memset(par , -1 , sizeof(par));
memset(val , 0 , sizeof(val));
return ;
}
int FIND(int i){
if(par[i] == -1)
return i;
int tp = par[i];
par[i] = FIND(par[i]);
val[i] = (val[i] + val[tp]) % mod;
return par[i];
}
void UNION(int w,int l,int r,int parl,int parr){
par[parr] = parl;
val[parr] = (val[l] + w - val[r] + mod) % mod;
return ;
}
总结: