package Test1;
public class L9 {
//并查集
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
class P {
static int[] par = new int[1000];// 父亲
static int[] rank = new int[1000];// 树的高度
// 初始化n个元素
public static void init(int n) {
for (int i = 0; i < n; i++) {
par[i] = i;
rank[i] = 0;
}
}
// 查询树的根
public static int find(int x) {
if (par[x] == x) {
return x;
} else {
return par[x] = find(par[x]);//路径压缩,把其他节点直接连向根
}
}
// 合并x和y所属的集合
public static void unite(int x, int y) {
x = find(x);
y = find(y);
if (x == y)//根节点相同
return;
if (rank[x] < rank[y]) {//高度小的树向高度大的树合并
par[x] = y;
} else {
par[y] = x;
if (rank[x] == rank[y])
rank[x]++;
}
}
//判断x和y是否是同一集合
public static boolean same(int x,int y) {
return find(x)==find(y);
}
}