Esempio n. 1
0
    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());
    }
Esempio n. 2
0
    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());
    }