您的位置:首页 > 其它

并查集

2016-03-25 20:13 330 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: