public TwoWayLinkedList GetRoute(TwoWayLinkedList chosenCities, City startPoint)
        {
            /*
             * LIST chosenCities SHOULDN'T CONTAIN STARTPOINT
             */
            City currentCity = startPoint;

            int currentCityIndex = 0;

            int[] distanceFromCurrentCity;

            City nearestNeighbour;

            int nearestNeighbourIndex;

            TwoWayLinkedList route = new TwoWayLinkedList();

            while (chosenCities.GetSize() != 0)
            {
                currentCityIndex        = FindCurrentCityIndex(currentCity);
                distanceFromCurrentCity = Dijkstra(CitiesInfo.Distances, currentCityIndex);
                nearestNeighbourIndex   = MinDistanceIndex(distanceFromCurrentCity, chosenCities);
                nearestNeighbour        = CitiesInfo.Cities[nearestNeighbourIndex];
                route.Concatenation(intermediateCities[nearestNeighbourIndex]);
                route.PushLast(nearestNeighbour);
                chosenCities.DelMidle(chosenCities.IndexOf(nearestNeighbour));
                currentCity = nearestNeighbour;
            }
            return(ClearRepetitions(route));
        }
        private void ShouD()
        {
            finalGridViewD.Rows.Clear();
            for (int k = finalGridViewD.RowCount - 1; k < D.GetSize(); k++)
            {
                finalGridViewD.Rows.Add();
            }

            int a = 0;

            foreach (City city in D)
            {
                finalGridViewD[0, a].Value = city.Name;
                finalGridViewD[2, a].Value = city.AmountPeopleYoungerTwenty;
                finalGridViewD[1, a].Value = city.AmountPeople;
                a++;
            }
        }
        private void ShouB()
        {
            gottenGridViewC.Rows.Clear();
            for (int k = gottenGridViewC.RowCount - 1; k < B.GetSize(); k++)
            {
                gottenGridViewC.Rows.Add();
            }

            int a = 0;

            foreach (City city in B)
            {
                gottenGridViewC[0, a].Value = city.Name;
                gottenGridViewC[2, a].Value = city.AmountPeopleYoungerTwenty;
                gottenGridViewC[1, a].Value = city.AmountPeople;
                a++;
            }
        }
        private void ShouC()
        {
            tourGridViewB.Rows.Clear();
            for (int k = tourGridViewB.RowCount - 1; k < C.GetSize(); k++)
            {
                tourGridViewB.Rows.Add();
            }

            int a = 0;

            foreach (City city in C)
            {
                tourGridViewB[0, a].Value = city.Name;
                tourGridViewB[2, a].Value = city.AmountPeopleYoungerTwenty;
                tourGridViewB[1, a].Value = city.AmountPeople;
                a++;
            }
        }
        private void ShouA()
        {
            givenCitiesGridViewA.Rows.Clear();
            for (int k = givenCitiesGridViewA.RowCount - 1; k < A.GetSize(); k++)
            {
                givenCitiesGridViewA.Rows.Add();
            }

            int a = 0;

            foreach (City city in A)
            {
                givenCitiesGridViewA[0, a].Value = city.Name;
                givenCitiesGridViewA[2, a].Value = city.AmountPeopleYoungerTwenty;
                givenCitiesGridViewA[1, a].Value = city.AmountPeople;
                a++;
            }
        }