Beispiel #1
0
    public bool ValidTree(int n, int[,] edges)
    {
        // 作为一棵树,节点的个数肯定比边数目大1
        if (n - 1 != edges.GetLength(0))
        {
            return(false);
        }

        UnionFind uf = new UnionFind(n);

        for (int i = 0; i < edges.GetLength(0); i++)
        {
            int parent_x = uf.CompressFind(edges[i, 0]);
            int parent_y = uf.CompressFind(edges[i, 1]);
            if (parent_x == parent_y)
            {
                return(false);
            }
            uf.Union(parent_x, parent_y);
        }
        return(true);
    }