在做ABC328 F题时,我在写带权并查集使用了两种几乎一样的合并写法,其中第一种过了,第二种挂了样例(成功合并了但是返回false),求助dalao们 是哪里的问题呢
第一种写法
bool Merge(int x, int y, LL w){
int Rx = Find(x), Ry = Find(y);
if(Rx != Ry){
fa[Rx] = Ry, val[Rx] = val[y]+w-val[x];
return true;
}return val[x] == val[y]+w;
}
第二种写法
bool Merge(int x, int y, LL w){
int Rx = Find(x), Ry = Find(y);
if(Rx != Ry) fa[Rx] = Ry, val[Rx] = val[y]+w-val[x];
return val[Rx]+val[x]-val[y] == w;
}