public List <string> GetGraf()
        {
            // Mengembalikan list graf dengan urut A - Z
            GFG           gg   = new GFG();
            List <string> list = this.Graf;

            list.Sort(gg);
            return(list);
        }
        public string ExploreFriendsDFS(string akunAsal, string akunTujuan)
        {
            List <string> listFriend    = new List <string>();
            List <string> listKunjungan = new List <string>();

            if (akunAsal == akunTujuan)
            {
                return("Apakah " + akunTujuan + " berteman dengan dirinya sendiri?");
            }
            GFG    gg     = new GFG();
            string result = "";

            DFS(akunAsal, akunTujuan, listKunjungan);

            if (listKunjungan.Contains(akunTujuan))
            {
                //Console.WriteLine("Ada");
                string awal  = akunAsal;
                string akhir = akunTujuan;
                if (string.Compare(akunAsal, akunTujuan) > 0)
                {
                    awal  = akunTujuan;
                    akhir = akunAsal;
                }
                listFriend = MyFriend(akhir);
                listFriend.Sort(gg);
                //this.ListExplore.Add(akunTujuan);

                while (!listFriend.Contains(awal))
                {
                    string TambahGraf = listFriend[0];
                    this.ListExplore.Add(TambahGraf);
                    listFriend.Clear();
                    listFriend = MyFriend(TambahGraf);
                    listFriend.Sort(gg);
                }
                //this.ListExplore.Add(akunAsal);
                this.ListExplore.Sort(gg);
                if (string.Compare(akunAsal, akunTujuan) > 0)
                {
                    this.ListExplore.Reverse();
                }
                this.degree = this.ListExplore.Count;
                if (this.degree == 0)
                {
                    result += " Sudah berteman.  ( ";
                }
                else
                {
                    result += "Derajat pertemanan " + this.degree + ". (";
                }

                result += akunAsal + " <---> ";
                foreach (string text in this.ListExplore)
                {
                    result += text + " <---> ";

                    /*if (text != akunTujuan)
                     * {
                     *  Console.Write("{0} --- ", text);
                     *  result += text + " <---> ";
                     * }
                     * else { Console.Write("{0}\n", text); result += text + " )"; }*/
                }
                result += akunTujuan + " )";
            }
            else
            {
                //MEET ?
                result += "Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri.";
                Console.WriteLine("Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri.");
            }
            listFriend.Clear();
            return(result);
        }
        // BFS EXPLORE
        public string ExploreFriendsBFS(string AkunAsal, string AkunTujuan)
        {
            List <string> ListFriend  = new List <string>();
            List <string> ListKujungi = new List <string>();
            string        result      = "";

            if (AkunAsal == AkunTujuan)
            {
                return("Apakah " + AkunTujuan + " berteman dengan dirinya sendiri?");
            }
            bool Status = false;
            GFG  gg     = new GFG();

            ListFriend = MyFriend(AkunAsal);
            ListFriend.Sort(gg);
            //Console.WriteLine(ListFriend[0]);

            // Kasus derajat 0
            ListKujungi.Add(AkunAsal);
            if (ListFriend.Contains(AkunTujuan))
            {
                Status = true; ListKujungi.Add(AkunTujuan);
            }

            // pencarian derajat lebih
            while (!ListKujungi.Contains(AkunTujuan) && !Status)
            {
                //Console.WriteLine("while");
                // penanda dikunjungi
                foreach (string text in ListFriend)
                {
                    if (text != AkunTujuan)
                    {
                        ListKujungi.Add(text);
                    }
                    else
                    {
                        ListKujungi.Add(text);
                        break;
                    }
                    //Console.WriteLine(text);
                }
                // Pengecekan apakah dah dikunjungi
                if (ListKujungi.Contains(AkunTujuan))
                {
                    Status = true;
                    break;
                }

                List <string> ListCopy = ListFriend.GetRange(0, ListFriend.Count);
                ListFriend.Clear();
                //Console.WriteLine(ListCopy[0]);
                foreach (string text in ListCopy)
                {
                    List <string> List2 = MyFriend(text);
                    foreach (string text2 in List2)
                    {
                        //Console.WriteLine(text2);
                        if (!ListKujungi.Contains(text2))
                        {
                            ListFriend.Add(text2);
                            //Console.WriteLine("Masuk");
                        }
                    }
                }

                ListFriend.Sort(gg);
                //Console.WriteLine(ListFriend[0]);
                if (!ListFriend.Any())
                {
                    Status = true;
                }
            }

            if (ListKujungi.Contains(AkunTujuan))
            {
                //Console.WriteLine("Ada");
                string Awal  = AkunAsal;
                string Akhir = AkunTujuan;
                if (string.Compare(AkunAsal, AkunTujuan) > 0)
                {
                    Awal  = AkunTujuan;
                    Akhir = AkunAsal;
                }
                ListFriend = MyFriend(Akhir);
                ListFriend.Sort(gg);
                //this.ListExplore.Add(AkunTujuan);

                while (!ListFriend.Contains(Awal))
                {
                    string TambahGraf = ListFriend[0];
                    this.ListExplore.Add(TambahGraf);
                    ListFriend.Clear();
                    ListFriend = MyFriend(TambahGraf);
                    ListFriend.Sort(gg);
                }
                //this.ListExplore.Add(AkunAsal);
                this.ListExplore.Sort(gg);
                if (string.Compare(AkunAsal, AkunTujuan) > 0)
                {
                    this.ListExplore.Reverse();
                }
                this.degree = this.ListExplore.Count;
                if (this.degree == 0)
                {
                    result += " Sudah berteman.  ( ";
                }
                else
                {
                    result += "Derajat pertemanan " + this.degree + ". (";
                }
                result += AkunAsal + " <---> ";
                Console.WriteLine(this.degree);
                foreach (string text in this.ListExplore)
                {
                    result += text + " <---> ";

                    /*
                     * if (text != AkunTujuan) {
                     *  Console.Write("{0} --- ", text);
                     *
                     * }
                     * else { Console.Write("{0}\n", text); result += text + " )"; } */
                }
                result += AkunTujuan + " )";
            }
            else
            {
                result += "Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri.";
                Console.WriteLine("Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri.");
            }
            ListFriend.Clear();
            return(result);
        }
            // BFS EXPLORE
            public void ExploreFriendsBFS(string AkunAsal, string AkunTujuan)
            {
                List <string> ListFriend  = new List <string>();
                List <string> ListKujungi = new List <string>();
                bool          Status      = false;
                GFG           gg          = new GFG();

                ListFriend = MyFriend(AkunAsal);
                ListFriend.Sort(gg);
                //Console.WriteLine(ListFriend[0]);

                // Kasus derajat 0
                if (ListFriend.Contains(AkunTujuan))
                {
                    Status = true; ListKujungi.Add(AkunTujuan);
                }
                ListKujungi.Add(AkunAsal);
                // pencarian derajat lebih
                while (!ListKujungi.Contains(AkunTujuan) && !Status)
                {
                    //Console.WriteLine("while");
                    // penanda dikunjungi
                    foreach (string text in ListFriend)
                    {
                        if (text != AkunTujuan)
                        {
                            ListKujungi.Add(text);
                        }
                        else
                        {
                            ListKujungi.Add(text);
                            break;
                        }
                        //Console.WriteLine(text);
                    }
                    // Pengecekan apahah dah dikunjungi
                    if (ListKujungi.Contains(AkunTujuan))
                    {
                        Status = true;
                        break;
                    }

                    List <string> ListCopy = ListFriend.GetRange(0, ListFriend.Count);
                    ListFriend.Clear();
                    //Console.WriteLine(ListCopy[0]);
                    foreach (string text in ListCopy)
                    {
                        List <string> List2 = MyFriend(text);
                        foreach (string text2 in List2)
                        {
                            //Console.WriteLine(text2);
                            if (!ListKujungi.Contains(text2))
                            {
                                ListFriend.Add(text2);
                                //Console.WriteLine("Masuk");
                            }
                        }
                    }

                    ListFriend.Sort(gg);
                    //Console.WriteLine(ListFriend[0]);
                    if (!ListFriend.Any())
                    {
                        Status = true;
                    }
                }
                if (ListKujungi.Contains(AkunTujuan))
                {
                    //Console.WriteLine("Ada");
                    string Awal  = AkunAsal;
                    string Akhir = AkunTujuan;
                    if (string.Compare(AkunAsal, AkunTujuan) > 0)
                    {
                        Awal  = AkunTujuan;
                        Akhir = AkunAsal;
                    }
                    ListFriend = MyFriend(Akhir);
                    ListFriend.Sort(gg);
                    this.ListExplore.Add(AkunTujuan);

                    while (ListFriend[0] != Awal)
                    {
                        string TambahGraf = ListFriend[0];
                        this.ListExplore.Add(TambahGraf);
                        ListFriend.Clear();
                        ListFriend = MyFriend(TambahGraf);
                        ListFriend.Sort(gg);
                    }
                    this.ListExplore.Add(AkunAsal);
                    this.ListExplore.Sort(gg);
                    if (string.Compare(AkunAsal, AkunTujuan) > 0)
                    {
                        this.ListExplore.Reverse();
                    }
                    this.degree = this.ListExplore.Count - 2;
                    Console.WriteLine(this.degree);
                    foreach (string text in this.ListExplore)
                    {
                        if (text != AkunTujuan)
                        {
                            Console.Write("{0} --- ", text);
                        }
                        else
                        {
                            Console.Write("{0}\n", text);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("Tidak ada jalur koneksi yang tersedia\nAnda harus memulai koneksi baru itu sendiri.");
                }
                ListFriend.Clear();
            }