PAT 甲级 总结 —— 中级篇
一、并查集
并查集的核心顾名思义,就是合并、查找、集合,其特殊用法可在最小生成树上体现
int father[maxn];
void init()
{
for(int i = 0;i < maxn,i++){
father[i]=i;
}
}
int findFather(int x)
{
int a = x;
while (x != father[x])
{
x = father[x];
}
while (a != father[a])
{
int z = father[a];
father[a] = x;
a = z;
}
return x;
}
//递推形式 包含路径压缩
int findfather(int a)
{
return father[a] == a ? a : (father[a] = findfather(father[a]));
}
void Union(int a, int b) {
int x = findfather(a);
int y = findfather(b);
if (x > y)
{
swap(x, y);
}
father[