public void DemoTest() { IUnionFind uf = new QuickUnion(10); uf.Union(4, 3); int[] root = uf.GetIds(); Assert.AreEqual(3, root[3]); Assert.AreEqual(3, root[4]); uf.Union(3, 8); root = uf.GetIds(); Assert.AreEqual(8, root[3]); uf.Union(6, 5); root = uf.GetIds(); Assert.AreEqual(5, root[6]); uf.Union(9, 4); root = uf.GetIds(); Assert.AreEqual(8, root[9]); uf.Union(2, 1); root = uf.GetIds(); Assert.AreEqual(1, root[2]); Assert.IsTrue(uf.Connected(8, 9)); Assert.IsFalse(uf.Connected(5, 4)); uf.Union(5, 0); root = uf.GetIds(); Assert.AreEqual(0, root[5]); uf.Union(7, 2); root = uf.GetIds(); Assert.AreEqual(1, root[7]); uf.Union(6, 1); root = uf.GetIds(); Assert.AreEqual(1, root[0]); uf.Union(7, 3); root = uf.GetIds(); Assert.AreEqual(8, root[1]); Assert.AreEqual(1, root[0]); Assert.AreEqual(8, root[1]); Assert.AreEqual(1, root[2]); Assert.AreEqual(8, root[3]); Assert.AreEqual(3, root[4]); Assert.AreEqual(0, root[5]); Assert.AreEqual(5, root[6]); Assert.AreEqual(1, root[7]); Assert.AreEqual(8, root[8]); Assert.AreEqual(8, root[9]); }
public void InitWorks() { IUnionFind uf = new QuickUnion(10); int[] ids = uf.GetIds(); for (int i = 0; i < 10; i++) { Assert.AreEqual(i, ids[i]); } }