code: function getPath(i, j) {
      if (path[i][j] === Infinity) throw 'There is no path.';
      var intermediate = next[i][j];
      if (intermediate === undefined) return null;else return getPath(i, intermediate).concat([intermediate]).concat(getPath(intermediate, j));
    }
docs: /* Step 3: Path reconstruction, get shortest path