0 pts 只对了 hack 的唐诗错误
查看原帖
0 pts 只对了 hack 的唐诗错误
1408977
yuyang0974楼主2025/8/30 11:50

合并入栈时,因为我 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]); // -> here
        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]); // -> here
        root[u] = v;
        if(deep[u] == deep[v]) deep[v] ++;
    }
    else stak[++ topS] = MPP(0, 0, 0);
}

:::

2025/8/30 11:50
加载中...