Guest User

Untitled

a guest
Jun 23rd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. function shortestPathLength(graph) {
  2. const dp = [...Array(graph.length)].map(r => Array(1<<(graph.length+1)).fill(Math.MAX_VALUE));
  3. const queue = [];
  4.  
  5. for (let v = 0; v < graph.length; v++) {
  6. dp[v][1<<v] = 0;
  7. queue.unshift([v, 1<<v]);
  8. }
  9.  
  10. while (queue.length) {
  11. let curr = queue.pop();
  12. if (curr[1] === (1<<graph.length) - 1) return dp[curr[0]][curr[1]];
  13.  
  14. for (let next of graph[curr[0]]) {
  15. let nextBitMask = curr[1] | (1<<next);
  16. if (dp[next][nextBitMask] === Math.MAX_VALUE) {
  17. dp[next][nextBitMask] = 1 + dp[curr[0]][curr[1]];
  18. queue.unshift([next, nextBitMask]);
  19. }
  20. }
  21. }
  22. }
Add Comment
Please, Sign In to add comment