【数据结构】用结构体实现并查集
struct union_find_set
{
int father[MAXN];//每个元素的祖先
union_find_set(int limit)//构造函数,对于每一个元素,其父亲初始化为它本身
{
for(int i=1;i<=limit;i++)
{
father[i]=i;
}
}
int find(int x)//找寻操作,使用路径压缩优化
{
if(father[x]!=x) father[x]=find(father[x]);
return father[x];
}
void unite(int a,int b)//合并操作,实质是将一个集合的共同父亲赋值为另一个集合
{
father[b]=a;
}
bool isSameSet(int a,int b)//判断是否在同一个集合里
{
return (find(a)==find(b));//只要两个元素的祖先相同就可以
}
}; 相关推荐
computermaths 2020-06-01
田有朋 2020-04-30
lickylin 2020-02-22
waitwolf 2019-11-09
yishujixiaoxiao 2019-11-03
hanyujianke 2019-10-21
鱼天翱 2019-06-27
珠宝的故事 2018-06-02
vczh的日常 2018-05-25
BitTigerio 2018-04-16
心理学哲学批判性思维 2018-03-28
友心人 2018-03-21
BitTigerio 2018-03-19
ScalersTalk成长会 2018-03-05
ScalersTalk成长会 2018-03-05
HomoEconomicus 2018-02-17
SimonSsAlgo 2018-02-03
迷思 2018-01-11