并查集是一种常用的数据结构,用于解决联通性问题,通常应用于图论中。以下是一个使用Java实现并查集的示例。
假设我们有一个由10个节点构成的图,节点编号分别为0-9。现在我们需要将这10个节点分成3个集合,其中第一个集合包括节点0,1,2,第二个集合包括节点3,4,5,第三个集合包括节点6,7,8,9。我们可以使用并查集来实现这个目标。
下面是使用Java实现并查集的示例代码:
public class UnionFind {
int[] parent;
public UnionFind(int n) {
parent = new int[n];
for (int i = 0; i < n; i++) {
parent[i] = i;
}
}
public int find(int x) {
if (parent[x] == x) {
return x;
}
return parent[x] = find(parent[x]);
}
public void union(int x, int y) {
int px = find(x);
int py = find(y);
parent[px] = py;
}
public static void main(String[] args) {
UnionFind uf = new UnionFind(10);
uf.union(0, 1);
uf.union(1, 2);
uf.union(3, 4);
uf.union(4, 5);
uf.union(6, 7);
uf.union(7, 8);
uf.union(8, 9);
System.out.println(uf.find(0) == uf.find(2));
System.out.println(uf.find(3) == uf.find(5));
System.out.println(uf.find(6) == uf.find(9));
}
}