Advertisement
What_Ever

Untitled

Jun 22nd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.20 KB | None | 0 0
  1.     @Override
  2.     public void runDijkstra(int src, int[] distances) {
  3.         dijkstraPreprocessedOrder.clear();
  4.         distances[0] = 0;
  5.         for (int i = 1 ; i < adjList.size() ; i++) {
  6.             distances[i] = INF;
  7.         }
  8.         PriorityQueue<Pair<Integer, Integer>> processingQueue = new PriorityQueue<>();
  9.         for (int i = 0 ; i < adjList.size() ; i++) {
  10.             processingQueue.add(new Pair<>(distances[i], i));
  11.         }
  12.         while (!processingQueue.isEmpty()) {
  13.             Pair<Integer, Integer> curPair = processingQueue.poll();
  14.             int curNode = curPair.getSecond();
  15.             dijkstraPreprocessedOrder.add(curNode);
  16.             for (Neighbor neighbor : adjList.get(curNode)) {
  17.                 int curNeigbor = neighbor.getDest();
  18.                 if (distances[curNode] + neighbor.getCost() < distances[curNeigbor]) {
  19.                     processingQueue.remove(new Pair<>(distances[curNeigbor], curNeigbor));
  20.                     distances[curNeigbor] = distances[curNode] + neighbor.getCost();
  21.                     processingQueue.add(new Pair<>(distances[curNeigbor], curNeigbor));
  22.                 }
  23.             }
  24.         }
  25.         replaceInfinity(distances);
  26.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement