package gps;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/* le graphe est représenté par des listes d'adjacence
*
*/
class Graph {
private static final Map<Vertex, List<Edge>> adj =
new HashMap<Vertex, List<Edge>>();
private static int edges = 0;
static void addEdge(Edge e) {
List<Edge> l = adj.get(e.src);
if (l == null)
adj.put(e.src, l = new LinkedList<Edge>());
l.add(e);
edges++;
}
static Iterable<Edge> successors(Vertex p) {
List<Edge> l = adj.get(p);
if (l == null)
return new LinkedList<Edge>();
return l;
}
static Iterable<Vertex> vertices() {
return adj.keySet();
}
static Iterable<List<Edge>> edges() {
return adj.values();
}
// renvoie le sommet le plus proche du point de coordonnées (lat,lon)
static Vertex closest(double lat, double lon) {
Vertex v = new Vertex(lat, lon), best = null;
double bestDist = Double.MAX_VALUE;
for (Vertex w : adj.keySet()) {
double dist = v.distance(w);
if (dist < bestDist) {
bestDist = dist;
best = w;
}
}
System.out.println("distance = " + bestDist);
return best;
}
static void stat() {
System.out.println(adj.size() + " nodes");
System.out.println(edges + " edges");
}
}