コード例 #1
0
        public static void Main()
        {
            DisjointSet ds    = new DisjointSet();
            int         input = 0;

            do
            {
                switch (input = PrintMenu())
                {
                case 1:
                    CallInit(ds);
                    break;

                case 2:
                    CallFind(ds);
                    break;

                case 3:
                    CallUnion(ds);
                    break;

                case 4:
                    Console.WriteLine("Exit.");
                    break;

                default:
                    Console.WriteLine("Error: Wrong Input!");
                    break;
                }
                Console.WriteLine();
            }while(input != 4);
        }
コード例 #2
0
        static void CallFind(DisjointSet ds)
        {
            Console.WriteLine("\nFind");
            Console.Write("Input: ");
            string input   = Console.ReadLine();
            int    element = Convert.ToInt32(input);

            Console.WriteLine("Root: {0}", ds.Find(element));
        }
コード例 #3
0
        static void CallInit(DisjointSet ds)
        {
            Console.WriteLine("\nInit");
            Console.Write("Input Set Size: ");
            string input = Console.ReadLine();
            int    size  = Convert.ToInt32(input);

            ds.Init(size);
        }
コード例 #4
0
        static void Main(string[] args)
        {
            var set = new DisjointSet();

            set.Make(5);
            set.Make(3);
            set.Make(1);
            set.Make(7);
            set.Make(4);

            set.Union(5, 3);
            set.Union(2, 1);
            set.Union(3, 4);

            Console.WriteLine(set.Find(4));
            Console.WriteLine("Press any key...");
            Console.ReadKey();
        }
コード例 #5
0
        static void CallUnion(DisjointSet ds)
        {
            Console.WriteLine("\nUnion");
            Console.Write("Input e1: ");
            string input = Console.ReadLine();
            int    e1    = Convert.ToInt32(input);

            Console.Write("Input e2: ");
            input = Console.ReadLine();
            int e2 = Convert.ToInt32(input);

            int r1 = ds.Find(e1);
            int r2 = ds.Find(e2);

            if (r1 == r2)
            {
                Console.WriteLine($"Error: {e1} and {e2} are in the same set {r1}");
                return;
            }
            ds.Union(r1, r2);
        }