您的位置:首页 > 其它

并查集模板

2016-03-22 22:46 232 查看
自己习惯这么写, 复习用:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
#define N 1005
int fa
;

void init(int n){
for(int i=0; i<n; i++){
fa[i]=i;
}
}

int find(int u){
if(fa[u]!=u)
fa[u]=find(fa[u]);
return fa[u];
}

void unin(int u, int v){
int fau=find(u);
int fav=find(v);
if(fau==fav)
return ;
fa[fav]=fau;
}

*******************************************************************************************************************************************************************************************************
int fa
;
void init(int n) { //并查集初始化
for (int i = 0; i <= n; i++){
fa[i] = i;
}
}
int find(int u) {//查找集合编号操作
if (fa[u] != u) {
fa[u] = find(fa[u]);
}
return fa[u];
}
void unin(int u, int v) {//并查集合并操作
int fau = find(u);
int fav = find(v);
if (fau == fav) return;
fa[fav] = fau;
}

/* 实际上,可以写的更短

int fa
;
void init(int n) {
for (int i = 0; i <= n; ++i) fa[i] = i;
}
int find(int u) {
return fa[u] == u ? fa[u] : fa[u] = find(fa[u]);
}
void unin(int u, int v) {
fa[find(v)] = find(u);
}

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  并查集 模板