图的使用 给定两点 构造图 判断两点之间是否连通
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); }
参考链接:https://zhuanlan.zhihu.com/p/93647900