并查集

发布时间 2023-08-02 16:32:51作者: DLSQS

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

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