/// <summary>
 /// 使用指定的连接按顺序合并。
 /// </summary>
 /// <param name="uf">需要测试的并查集。</param>
 /// <param name="connections">用于输入的连接集合。</param>
 public static void Count(Uf uf, Connection[] connections)
 {
     foreach (var c in connections)
     {
         uf.Union(c.P, c.Q);
     }
 }
    /// <summary>
    /// 随机生成连接,返回令并查集中只剩一个连通分量所需的连接总数。
    /// </summary>
    /// <param name="uf">用于测试的并查集。</param>
    /// <returns>需要的连接总数。</returns>
    public static int Count(Uf uf)
    {
        var random = new Random();
        var size   = uf.Count();
        var edges  = 0;

        while (uf.Count() > 1)
        {
            var p = random.Next(size);
            var q = random.Next(size);
            uf.Union(p, q);
            edges++;
        }

        return(edges);
    }