public int MakeConnected(int n, int[][] connections) { if (connections.Length < n - 1) { return(-1); } QuickUnionUF uf = new QuickUnionUF(n); int p; int q; for (int i = 0; i < connections.Length; i++) { p = connections[i][0]; q = connections[i][1]; if (uf.Find(p) != uf.Find(q)) { uf.Uunion(p, q); } } int requiredEdges = uf.Count - 1; return(requiredEdges); }
public void testUnionAndConnected_NewConnection() { QuickUnionUF quickUnionUF = new QuickUnionUF(10); Assert.IsFalse(quickUnionUF.Connected(0, 1)); Assert.AreEqual(10, quickUnionUF.Count()); quickUnionUF.Union(0, 1); Assert.IsTrue(quickUnionUF.Connected(0, 1)); Assert.AreEqual(9, quickUnionUF.Count()); Assert.AreEqual(1, quickUnionUF.Find(1)); Assert.AreEqual(1, quickUnionUF.Find(0)); }
public void testUnionAndConnected_MultiConnection() { QuickUnionUF quickUnionUF = new QuickUnionUF(10); quickUnionUF.Union(0, 1); quickUnionUF.Union(2, 1); Assert.IsTrue(quickUnionUF.Connected(0, 1)); Assert.IsTrue(quickUnionUF.Connected(2, 1)); Assert.IsTrue(quickUnionUF.Connected(2, 0)); Assert.AreEqual(8, quickUnionUF.Count()); Assert.AreEqual(1, quickUnionUF.Find(1)); Assert.AreEqual(1, quickUnionUF.Find(0)); Assert.AreEqual(1, quickUnionUF.Find(2)); quickUnionUF.Union(2, 5); Assert.IsTrue(quickUnionUF.Connected(0, 1)); Assert.IsTrue(quickUnionUF.Connected(2, 1)); Assert.IsTrue(quickUnionUF.Connected(2, 0)); Assert.IsTrue(quickUnionUF.Connected(5, 0)); Assert.IsTrue(quickUnionUF.Connected(5, 1)); Assert.IsTrue(quickUnionUF.Connected(5, 2)); Assert.AreEqual(7, quickUnionUF.Count()); Assert.AreEqual(5, quickUnionUF.Find(1)); Assert.AreEqual(5, quickUnionUF.Find(0)); Assert.AreEqual(5, quickUnionUF.Find(2)); Assert.AreEqual(5, quickUnionUF.Find(5)); }
public void testFind() { QuickUnionUF quickUnionUF = new QuickUnionUF(10); for (int i = 0; i < 10; i++) { Assert.AreEqual(i, quickUnionUF.Find(i)); } }
public void testFind_ParameterValidation_PLargerThanN() { QuickUnionUF quickUnionUF = new QuickUnionUF(10); quickUnionUF.Find(11); }
public void testFind_ParameterValidation_PEqualN() { QuickUnionUF quickUnionUF = new QuickUnionUF(10); quickUnionUF.Find(10); }
public void testFind_ParameterValidation_PLessThan0() { QuickUnionUF quickUnionUF = new QuickUnionUF(10); quickUnionUF.Find(-1); }