Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.36 KB | None | 0 0
  1. public void floyd() {
  2.         Stop from, to;
  3.         double weight;
  4.         int n = numberOfVertices();
  5.  
  6.         matrixD = new double[n][n];
  7.         matrixA = new int[n][n];
  8.  
  9.         for (int i = 0; i < n; i++) {
  10.             for (int j = 0; j < n; j++) {
  11.                 matrixA[i][j] = -1;
  12.                 matrixD[i][j] = (i == j) ? 0 : Double.MAX_VALUE;
  13.             }
  14.         }
  15.  
  16.         for (Entry<Stop, TreeMap<Stop, Double>> e1 : adjacencyMap.entrySet()) {
  17.             for (Entry<Stop, Double> e2 : e1.getValue().entrySet()) {
  18.                 from = e1.getKey();
  19.                 to = e2.getKey();
  20.                 weight = e2.getValue();
  21.                 matrixD[vertexToIndex.get(from)][vertexToIndex.get(to)] = weight;
  22.             }
  23.         }
  24.  
  25.         for (int k = 0; k < n; k++) {
  26.             for (int i = 0; i < n; i++) {
  27.                 if (i == k)    continue;
  28.                 for (int j = 0; j < n; j++) {
  29.                     if (j == k || i == j) continue;
  30.                     if (matrixD[i][k] == Double.MAX_VALUE || matrixD[k][j] == Double.MAX_VALUE)
  31.                         continue;
  32.                     if ((matrixD[i][k] + matrixD[k][j]) < matrixD[i][j]) {
  33.                         matrixD[i][j] = matrixD[i][k] + matrixD[k][j];
  34.                         matrixA[i][j] = k;
  35.                     }
  36.                 }
  37.             }
  38.         }
  39.      }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement