算法模板模板(逐渐补充)
程序员文章站
2024-03-15 15:11:27
...
并查集
#define N 105
int pre[N];
int rank[N];
int init(int n) {
for (int i = 0; i < n; i++) {
pre[i] = i;
rank[i] = i;
}
}
int find_pre(int x) {
if (pre[x] == x) {
return x;
}
return find_pre(pre[x]);
}
int find_pre(int x) {
if (pre[x] == x) {
return x;
}
return pre[x] = find_pre(pre[x]);
}
bool is_same(int x, int y) {
int rootx, rooty;
rootx = find_pre(x);
rooty = find_pre(y);
if (rootx == rooty) {
return ;
}
if (rank[rootx] > rank[rooty]) {
pre[rooty] == rootx; // 大的当根
}
else {
if (rank[rootx] == rank[rooty]) {
rank[rooty]++;
}
pre[rootx] = rooty;
}
}
上一篇: 求N以内的素数
下一篇: PAT题--1013 数素数