if (ll[p] == rr[p])
return cout << (res ? "Yes\n" : "No\n"), void();
traverse(lson(p), res);
traverse(rson(p), res);
while (cnt) {
dsu.split();
--cnt;
}
注意这个位置不能直接 return,因为还要处理 split 操作,所以应该是这样:
if (ll[p] == rr[p])
cout << (res ? "Yes\n" : "No\n");
else {
traverse(lson(p), res);
traverse(rson(p), res);
}
while (cnt) {
dsu.split();
--cnt;
}