public List<Node> dijkstra(Building src, Building dest) { PriorityQueue<DijkstraVertex> aVisiter = new PriorityQueue<DijkstraVertex>(); for (Node n : src.getNeighbors()) { DijkstraVertex source = (DijkstraVertex) get(n); aVisiter.add(source); source.distance = 0; } DijkstraVertex actuel = aVisiter.poll(); int cpt = 0; while (!estUnVoisin(actuel.node, dest) && aVisiter.size() > 0) { cpt++; actuel.visited = true; for (Node n : actuel.neighbors) { int dist = actuel.distance + 1; DijkstraVertex tmp = (DijkstraVertex) get(n); if (dist < tmp.distance) { tmp.distance = dist; tmp.previous = actuel; if (!tmp.visited) { aVisiter.add(tmp); } } } actuel = aVisiter.poll(); } System.out.println("Itérations: " + cpt); DijkstraVertex finalNode = null; for (Node n : dest.getNeighbors()) { actuel = (DijkstraVertex) get(n); if (finalNode == null) finalNode = actuel; if (actuel.distance < finalNode.distance) finalNode = actuel; } System.out.println(finalNode.distance); LinkedList<Node> res = new LinkedList<Node>(); while (finalNode != null) { res.addFirst(finalNode.node); finalNode = finalNode.previous; } return res; }