/// <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; } }
private string GetNotConnectedUnions() { List <string> result = new List <string>(); for (int i = 0; i < _unions.GetLength(0); i++) { int p = _unions[i, 0]; int q = _unions[i, 1]; if (!_unionFind.Connected(p, q)) { _unionFind.Union(p, q); result.Add($"{p} {q}"); } } return(string.Join(" : ", result)); }
public void WhenCall_Union_ShouldReturnCorrectComponentAndConnectedResults() { // Arrange var testDataSet = FakeUnionData.Data(); // Act foreach (var obj in testDataSet) { int p = (int)obj[0]; int q = (int)obj[1]; int componentCount = (int)obj[2]; int dot1 = (int)obj[3]; int dot2 = (int)obj[4]; bool res = (bool)obj[5]; unionFind.Union(p, q); // Assert Assert.Equal(unionFind.Count(), componentCount); Assert.Equal(unionFind.Connected(dot1, dot2), res); } }