各位佬,我正在尝试用并查集合并 trie 树上的点,但是有个地方不理解,为什么最后要写 y = find(y),修改子树对 y 有什么影响吗
void merge(int x, int y)
{
if (x == y) return;
fa[x] = y;
st[y] |= st[x];
for (int i = 0; i <= 9; i++)
{
int a = son[x][i], b = son[y][i];
int pa = find(a), pb = find(b);
if (!b) son[y][i] = pa;
else if (a) merge(pa, pb), y = find(y);
}
}