并查集

一般用于合并集合并查找集合

int find(int x) {//查找x的祖先
    if (pre[x] == x)return x;
    return pre[x] = find(pre[x]);//压缩路径
}
void join(int x, int y) {
    int fx = find(x), fy = find(y);//查找这两个数的祖先
    if (fx != fy)pre[fx] = fy;
    //如果x和y的祖先不一样,那么将y的祖先变为x的祖先的祖先
    //简单来说就是将两个集合合并
}

 

posted @ 2023-08-02 16:26  DLSQS  阅读(34)  评论(0)    收藏  举报