Exemplo n.º 1
0
        protected void determine_shortest_paths(airport source_airport,
                                                airport sink_airport, bool is_source2sink)
        {
            clear();


            airport end_airport   = is_source2sink ? sink_airport : source_airport;
            airport start_airport = is_source2sink ? source_airport : sink_airport;

            start_airport_distance_index[start_airport.airport_ID] = 0.0;
            start_airport.set_distance(0.0);
            airports_candidate_queue.Add(start_airport);

            while (!airports_candidate_queue.IsEmpty())
            {
                airport cur_candidate = airports_candidate_queue.Poll();

                if (cur_candidate.Equals(end_airport))
                {
                    break;
                }

                determined_airports_set.Add(cur_candidate);

                improve_to_airport(cur_candidate, is_source2sink);
            }
        }