Exemplo n.º 1
1
        /// <summary>
        /// Perform a Quick Find on a small text file.
        /// </summary>
        /// <param name="unionFind">The union find to be tested.</param>
        internal static void CommonUnionFindTiny(IUnionFind unionFind)
        {
            using (In input = new In("Algs4-Data\\TinyUF.txt"))
             {
            int initialComponentCount = input.ReadInt();
            unionFind.IsolateComponents(initialComponentCount);
            while (!input.IsEmpty())
            {
               int siteP = input.ReadInt();
               int siteQ = input.ReadInt();
               if (unionFind.Connected(siteP, siteQ))
               {
                  continue;
               }

               unionFind.Union(siteP, siteQ);
            }
             }

             Assert.AreEqual(2, unionFind.Count);
        }
        /// <summary>
        /// Common portion of file input UnionFind tests.
        /// </summary>
        /// <param name="streamName">The name for the input stream.</param>
        /// <param name="unionFind">The union find to be tested.</param>
        /// <returns>The Union Find structure.</returns>
        public static IUnionFind UnionFindCommon(string streamName, IUnionFind unionFind)
        {
            if (null == streamName)
             {
            throw new ArgumentNullException("streamName");
             }

             if (null == unionFind)
             {
            throw new ArgumentNullException("unionFind");
             }

             using (In input = new In(streamName))
             {
            int initialComponentCount = input.ReadInt();
            unionFind.IsolateComponents(initialComponentCount);
            while (!input.IsEmpty())
            {
               int siteP = input.ReadInt();
               int siteQ = input.ReadInt();
               if (unionFind.Connected(siteP, siteQ))
               {
                  continue;
               }

               unionFind.Union(siteP, siteQ);
            }

            return unionFind;
             }
        }