合并入栈时,因为我 swap 了节点,而 stak[++ topS] 却放在了交换之前,所以导致统计出错(样例是真的水)。
:::error[错误代码]{open}
void Merge(int u, int v) {
    u = fid(u);
    v = fid(v);
    if(u ^ v) {
        stak[++ topS] = MPP(u, v, deep[v]); 
        if(deep[u] > deep[v]) swap(u, v);
        root[u] = v;
        if(deep[u] == deep[v]) deep[v] ++;
    }
    else stak[++ topS] = MPP(0, 0, 0);
}
:::
:::success[正确代码]{open}
void Merge(int u, int v) {
    u = fid(u);
    v = fid(v);
    if(u ^ v) {
        if(deep[u] > deep[v]) swap(u, v);
        stak[++ topS] = MPP(u, v, deep[v]); 
        root[u] = v;
        if(deep[u] == deep[v]) deep[v] ++;
    }
    else stak[++ topS] = MPP(0, 0, 0);
}
:::