并查集
一般用于合并集合并查找集合
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的祖先的祖先 //简单来说就是将两个集合合并 }

浙公网安备 33010602011771号