/// <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; } }