Exemple #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("data file name for QuickFind:");
            string file = Console.ReadLine();

            string[] RawSet = File.ReadAllLines(file);
            int      N      = Convert.ToInt32(RawSet[0]);

            string[] ProbSet = new string[RawSet.Length - 1];
            for (int i = 1; i < RawSet.Length; i++)
            {
                ProbSet[i - 1] = RawSet[i];
            }

            QuickFind uf = new QuickFind(N);

            foreach (string word in ProbSet)
            {
                string[] Pair = word.Split(" ");
                int      p    = Convert.ToInt32(Pair[0]);
                int      q    = Convert.ToInt32(Pair[1]);
                if (uf.IsConnected(p, q))
                {
                    continue;
                }
                uf.Union(p, q);
                Console.WriteLine(p + " " + q + " are now connected");
            }

            Console.WriteLine(uf.Count() + " total components");
        }
Exemple #2
0
        public void QuickFindTest()
        {
            //Arrange
            var quickFind = new QuickFind(10);
            //Act

            //7-9 0-3 5-0 5-6 0-8 4-1
            quickFind.Union(7, 9);
            quickFind.Union(0, 3);
            quickFind.Union(5, 0);
            quickFind.Union(5, 6);
            quickFind.Union(0, 8);
            quickFind.Union(4, 1);
            //Assert
            Assert.IsTrue(quickFind.IsConnected(7, 9));
            Assert.IsTrue(quickFind.IsConnected(0, 3));
            Assert.IsTrue(quickFind.IsConnected(5, 0));

            Assert.IsTrue(quickFind.IsConnected(5, 6));
            Assert.IsTrue(quickFind.IsConnected(0, 8));
            Assert.IsTrue(quickFind.IsConnected(4, 1));

            foreach (var component in quickFind.Components)
            {
                Trace.WriteLine(component);
            }
        }