常用场合:
图的使用 给定两点 构造图 判断两点之间是否连通
初始化
private static void init(int n, int fa[]) {//初始化数组
for (int i = 1; i <= n; i++) {
fa[i] = i;
}
}
查根节点
private static int find(int x, int fa[]) {//查
if (fa[x] == x) {
return x;
} else {
fa[x] = find(fa[x], fa);
return fa[x];
}
}
将两点连接在一起
private static void merge(int i, int j, int fa[]) {//并
if (fa[find(i, fa)] != find(j, fa))
fa[find(i, fa)] = find(j, fa);
}