// Path: src/de/jungblut/graph/model/Edge.java
// public final class Edge<VERTEX_ID, EDGE_VALUE> {
// 
//     private final VERTEX_ID destinationVertexID;
//     private final EDGE_VALUE cost;
// 
//     public Edge(VERTEX_ID destinationVertexID, EDGE_VALUE cost) {
//         this.destinationVertexID = destinationVertexID;
//         this.cost = cost;
//     }
// 
//     public VERTEX_ID getDestinationVertexID() {
//         return destinationVertexID;
//     }
// 
//     public EDGE_VALUE getValue() {
//         return cost;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime
//                 * result
//                 + ((this.destinationVertexID == null) ? 0 : this.destinationVertexID
//                 .hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         @SuppressWarnings("rawtypes")
//         Edge other = (Edge) obj;
//         if (this.destinationVertexID == null) {
//             if (other.destinationVertexID != null)
//                 return false;
//         } else if (!this.destinationVertexID.equals(other.destinationVertexID))
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return this.destinationVertexID + ":" + this.getValue();
//     }
// 
// }
// 
// Path: src/de/jungblut/graph/model/VertexImpl.java
// public final class VertexImpl<VERTEX_ID, VERTEX_VALUE> implements
//         Vertex<VERTEX_ID, VERTEX_VALUE> {
// 
//     private final VERTEX_ID id;
//     private final VERTEX_VALUE value;
// 
//     public VertexImpl(VERTEX_ID id, VERTEX_VALUE value) {
//         super();
//         this.id = id;
//         this.value = value;
//     }
// 
//     @Override
//     public VERTEX_ID getVertexId() {
//         return id;
//     }
// 
//     @Override
//     public VERTEX_VALUE getVertexValue() {
//         return value;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((this.id == null) ? 0 : this.id.hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         @SuppressWarnings("rawtypes")
//         VertexImpl other = (VertexImpl) obj;
//         if (this.id == null) {
//             if (other.id != null)
//                 return false;
//         } else if (!this.id.equals(other.id))
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return "VertexImpl [id=" + this.id + ", value=" + this.value + "]";
//     }
// 
// }


import de.jungblut.graph.model.Edge;
import de.jungblut.graph.model.VertexImpl;
import java.util.ArrayList;
        // 7, 5, 3, 11, 8, 2, 9, 10
        cities.add(new VertexImpl<>(7, "")); // 0
        cities.add(new VertexImpl<>(5, "")); // 1
        cities.add(new VertexImpl<>(3, "")); // 2
        cities.add(new VertexImpl<>(11, "")); // 3
        cities.add(new VertexImpl<>(8, "")); // 4
        cities.add(new VertexImpl<>(2, "")); // 5
        cities.add(new VertexImpl<>(9, "")); // 6
        cities.add(new VertexImpl<>(10, "")); // 7

        // 7 -> 11, 8
        graph.addVertex(cities.get(0),
                new Edge<>(cities.get(3).getVertexId(), null),
                new Edge<>(cities.get(4).getVertexId(), null));
        // 5 -> 11
        graph.addVertex(cities.get(1), new Edge<>(cities.get(3).getVertexId(), null));
        // 3 -> 8,10
        graph.addVertex(cities.get(2),
                new Edge<>(cities.get(4).getVertexId(), null),
                new Edge<>(cities.get(7).getVertexId(), null));
        // 11 -> 2,9,10
        graph.addVertex(cities.get(3),
                new Edge<>(cities.get(2).getVertexId(), null),
                new Edge<>(cities.get(6).getVertexId(), null),
                new Edge<>(cities.get(7).getVertexId(), null));
        // 8 -> 9
        graph.addVertex(cities.get(4), new Edge<>(cities.get(6).getVertexId(), null));
        // 2 -> nowhere
        graph.addVertex(cities.get(5));
        // 9 -> nowhere
// Path: src/de/jungblut/graph/model/Edge.java
// public final class Edge<VERTEX_ID, EDGE_VALUE> {
// 
//     private final VERTEX_ID destinationVertexID;
//     private final EDGE_VALUE cost;
// 
//     public Edge(VERTEX_ID destinationVertexID, EDGE_VALUE cost) {
//         this.destinationVertexID = destinationVertexID;
//         this.cost = cost;
//     }
// 
//     public VERTEX_ID getDestinationVertexID() {
//         return destinationVertexID;
//     }
// 
//     public EDGE_VALUE getValue() {
//         return cost;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime
//                 * result
//                 + ((this.destinationVertexID == null) ? 0 : this.destinationVertexID
//                 .hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         @SuppressWarnings("rawtypes")
//         Edge other = (Edge) obj;
//         if (this.destinationVertexID == null) {
//             if (other.destinationVertexID != null)
//                 return false;
//         } else if (!this.destinationVertexID.equals(other.destinationVertexID))
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return this.destinationVertexID + ":" + this.getValue();
//     }
// 
// }
// 
// Path: src/de/jungblut/graph/model/VertexImpl.java
// public final class VertexImpl<VERTEX_ID, VERTEX_VALUE> implements
//         Vertex<VERTEX_ID, VERTEX_VALUE> {
// 
//     private final VERTEX_ID id;
//     private final VERTEX_VALUE value;
// 
//     public VertexImpl(VERTEX_ID id, VERTEX_VALUE value) {
//         super();
//         this.id = id;
//         this.value = value;
//     }
// 
//     @Override
//     public VERTEX_ID getVertexId() {
//         return id;
//     }
// 
//     @Override
//     public VERTEX_VALUE getVertexValue() {
//         return value;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + ((this.id == null) ? 0 : this.id.hashCode());
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         @SuppressWarnings("rawtypes")
//         VertexImpl other = (VertexImpl) obj;
//         if (this.id == null) {
//             if (other.id != null)
//                 return false;
//         } else if (!this.id.equals(other.id))
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return "VertexImpl [id=" + this.id + ", value=" + this.value + "]";
//     }
// 
// }


// Path: test/de/jungblut/graph/TestGraphProvider.java
import de.jungblut.graph.model.Edge;
import de.jungblut.graph.model.VertexImpl;
import java.util.ArrayList;

        // 7, 5, 3, 11, 8, 2, 9, 10
        cities.add(new VertexImpl<>(7, "")); // 0
        cities.add(new VertexImpl<>(5, "")); // 1
        cities.add(new VertexImpl<>(3, "")); // 2
        cities.add(new VertexImpl<>(11, "")); // 3
        cities.add(new VertexImpl<>(8, "")); // 4
        cities.add(new VertexImpl<>(2, "")); // 5
        cities.add(new VertexImpl<>(9, "")); // 6
        cities.add(new VertexImpl<>(10, "")); // 7

        // 7 -> 11, 8
        graph.addVertex(cities.get(0),
                new Edge<>(cities.get(3).getVertexId(), null),
                new Edge<>(cities.get(4).getVertexId(), null));
        // 5 -> 11
        graph.addVertex(cities.get(1), new Edge<>(cities.get(3).getVertexId(), null));
        // 3 -> 8,10
        graph.addVertex(cities.get(2),
                new Edge<>(cities.get(4).getVertexId(), null),
                new Edge<>(cities.get(7).getVertexId(), null));
        // 11 -> 2,9,10
        graph.addVertex(cities.get(3),
                new Edge<>(cities.get(2).getVertexId(), null),
                new Edge<>(cities.get(6).getVertexId(), null),
                new Edge<>(cities.get(7).getVertexId(), null));
        // 8 -> 9
        graph.addVertex(cities.get(4), new Edge<>(cities.get(6).getVertexId(), null));
        // 2 -> nowhere
        graph.addVertex(cities.get(5));
        // 9 -> nowhere
        graph.addVertex(cities.get(6));