并查集
初始化
int p[N]; //存储每个点的祖宗节点
for (int i = 1; i <= n; i ++ ) p[i] = i;
find函数
// 返回x的祖宗节点
int find(int x)
{
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
合并两个集合
//合并a和b所在的两个集合:
p[find(a)] = find(b);
并查集
初始化
int p[N]; //存储每个点的祖宗节点
for (int i = 1; i <= n; i ++ ) p[i] = i;
find函数
// 返回x的祖宗节点
int find(int x)
{
if (p[x] != x) p[x] = find(p[x]);
return p[x];
}
合并两个集合
//合并a和b所在的两个集合:
p[find(a)] = find(b);