Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function shortestPathLength(graph) {
- const dp = [...Array(graph.length)].map(r => Array(1<<(graph.length+1)).fill(Math.MAX_VALUE));
- const queue = [];
- for (let v = 0; v < graph.length; v++) {
- dp[v][1<<v] = 0;
- queue.unshift([v, 1<<v]);
- }
- while (queue.length) {
- let curr = queue.pop();
- if (curr[1] === (1<<graph.length) - 1) return dp[curr[0]][curr[1]];
- for (let next of graph[curr[0]]) {
- let nextBitMask = curr[1] | (1<<next);
- if (dp[next][nextBitMask] === Math.MAX_VALUE) {
- dp[next][nextBitMask] = 1 + dp[curr[0]][curr[1]];
- queue.unshift([next, nextBitMask]);
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment