#define MAX 10001 //结点数
int father[MAX];
void init()//初始化{for (int i = 1; i <= MAX; i++)father[i] = i;}
int find(int a) {//查找并压缩
if (father[a] != a)father[a] = find(father[a]);
return father[a];
}
void merge(int a, int b) {//连接a,b两点
int x= find(a), y= find(b);
if (x != y)father[x] = y;
}
并查集
最新推荐文章于 2024-05-06 09:15:00 发布