public int FindCircleNum(int[][] M) { int n = M.Length; UF uf = new UF(n); for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { if (M[i][j] == 1) { uf.Union(i, j); } } } return(uf.Count()); }
void Start() { int n = 0; //触点数量 ConnectedPQ[] pq = ReadAllIntPairs(text, out n); UF uf = new UF(n); for (int i = 0; i < pq.Length; i++) { int p = pq[i].p; int q = pq[i].q; if (uf.connected(p, q)) { continue; } uf.union(p, q); } print("连通分量components个数:" + uf.Count()); }