📄 union.cpp
字号:
int set[maxn],rank[maxn];
void newset(int n){ for(i=0; i<n; i++) set[i]=i; }
int find(int i){
int j, k, t;
for (k=i; set[k]!=k; k=set[k]);
for (j=i; j!=k; j=t){ t = set[j]; set[j] = k; }
return k;
}
void join(int i, int j){
i = find(i); j = find(j);
if (i==j) return;
if (rank[i]<=rank[j]){
set[i] = j;
if (rank[i]==rank[j]) rank[j]++;
} else set[j] = i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -