// Path: Labs/resources/net/datastructures/Edge.java
// public interface Edge<E> {
//   /** Returns the element associated with the edge. */
//   E getElement();
// }
// 
// Path: Labs/resources/net/datastructures/Vertex.java
// public interface Vertex<V> {
//   /** Returns the element associated with the vertex. */
//   V getElement();
// }


import net.datastructures.Edge;
import net.datastructures.Vertex;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Hashtable;

            graph.insertEdge(sourceV, destV, flightLeg);
        }

        // connect vertices in the same airport in increasing direction of time

        ArrayList<TimeAtAirport> allTAA = new ArrayList<>();
        for (Vertex<TimeAtAirport> v : graph.vertices()) {
            allTAA.add(v.getElement());
        }

        Collections.sort(allTAA); // sort according to Comparable TimeAtAirport (first airport the time)

        TimeAtAirport taa1 = allTAA.get(0);
        TimeAtAirport taa2;

        for (int i = 1; i < allTAA.size(); i++) {
            taa2 = allTAA.get(i);
            if (taa1.sameAirport(taa2)) {
                Flight dummyFlight = new Flight("Connection", taa1.getAirport(), taa2.getAirport(), "", "", taa1.getTime(), taa2.getTime(), 0);
                graph.insertEdge(vertices.get(taa1), vertices.get(taa2), dummyFlight);
            }
            taa1 = taa2;
        }

    }

    private void displayAllPathInfo(DijkstraAlgorithm.ShortestPathsInfo spInfo) {
        int[] listV = spInfo.getPrevVertex();
        int[] listD = spInfo.getDist();
// Path: Labs/resources/net/datastructures/Edge.java
// public interface Edge<E> {
//   /** Returns the element associated with the edge. */
//   E getElement();
// }
// 
// Path: Labs/resources/net/datastructures/Vertex.java
// public interface Vertex<V> {
//   /** Returns the element associated with the vertex. */
//   V getElement();
// }


// Path: Assignments/Assignment 5/BuildItinerary.java
import net.datastructures.Edge;
import net.datastructures.Vertex;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Hashtable;


            graph.insertEdge(sourceV, destV, flightLeg);
        }

        // connect vertices in the same airport in increasing direction of time

        ArrayList<TimeAtAirport> allTAA = new ArrayList<>();
        for (Vertex<TimeAtAirport> v : graph.vertices()) {
            allTAA.add(v.getElement());
        }

        Collections.sort(allTAA); // sort according to Comparable TimeAtAirport (first airport the time)

        TimeAtAirport taa1 = allTAA.get(0);
        TimeAtAirport taa2;

        for (int i = 1; i < allTAA.size(); i++) {
            taa2 = allTAA.get(i);
            if (taa1.sameAirport(taa2)) {
                Flight dummyFlight = new Flight("Connection", taa1.getAirport(), taa2.getAirport(), "", "", taa1.getTime(), taa2.getTime(), 0);
                graph.insertEdge(vertices.get(taa1), vertices.get(taa2), dummyFlight);
            }
            taa1 = taa2;
        }

    }

    private void displayAllPathInfo(DijkstraAlgorithm.ShortestPathsInfo spInfo) {
        int[] listV = spInfo.getPrevVertex();
        int[] listD = spInfo.getDist();
        Edge[] listE = spInfo.getPrevEdge();