Advertisement
Guest User

Floyd-Warshall in Java

a guest
Jan 26th, 2015
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.96 KB | None | 0 0
  1. /*
  2.  * Faster Floyd-Warshall
  3.  * approximately 800 ms for 1000x1000 matrix
  4.  */
  5. public static void FloydWarshall(int[][] M) {
  6.         int N = M.length;
  7.         for (int v = 0; v < N; v++) {
  8.             for (int f = 0; f < N; f++) {
  9.                 for (int t = 0; t < N; t++) {
  10.                     M[f][t] = Math.min(M[f][t], M[f][v] + M[v][t]);
  11.                 }
  12.             }
  13.         }
  14.     }
  15.  
  16. /*
  17.  * Slower for some reason
  18.  * approximately 2100 ms for 1000x1000 matrix
  19.  */
  20. public static void OFloydWarshall(int[][] M) {
  21.     int N = M.length;
  22.         int now, chk;
  23.         for (int via = 0; via < N; via++) {
  24.             for (int van = 0; van < N; van++) {
  25.                 for (int naar = 0; naar < N; naar++) {
  26.                     now = M[van][naar];
  27.                     chk = M[van][via] + M[via][naar];
  28.                     if (chk < now) {
  29.                         M[van][naar] = chk;
  30.                     }
  31.                 }
  32.             }
  33.         }
  34.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement