#include <iostream>
using namespace std;
int parent[10000001],rank[10000001];
void make_set() //初始化
{
int i;
for(i=1;i<10000001;i++)
{
parent[i]=i;
rank[i]=1;
}
}
int find(int x)//查找时带有路径优化
{
if(x!=parent[x])
parent[x]=find(parent[x]);
return parent[x];
}
void union_set(int x,int y)//合并
{
x=find(x),y=find(y);
if(x!=y)
{
if(rank[x]<rank[y])
{
parent[x]=y;
rank[y]+=rank[x];
}
else
{
parent[y]=x;
rank[x]+=rank[y];
}
}
}
int main()
{
return 0;
}
并查集模版
最新推荐文章于 2022-04-25 14:38:10 发布