Skip to content

Commit f0deeac

Browse files
authored
Create 1059-all-paths-from-source-lead-to-destination.js
1 parent 14d50ac commit f0deeac

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/**
2+
* @param {number} n
3+
* @param {number[][]} edges
4+
* @param {number} source
5+
* @param {number} destination
6+
* @return {boolean}
7+
*/
8+
const leadsToDestination = function(n, edges, source, destination) {
9+
const inm = new Map(), outm = new Map()
10+
for(let k = 0, len = edges.length; k < len; k++) {
11+
const [o, i] = edges[k]
12+
if(!inm.has(i)) inm.set(i, new Set())
13+
if(!outm.has(o)) outm.set(o, new Set())
14+
inm.get(i).add(o)
15+
outm.get(o).add(i)
16+
}
17+
const visited = new Set()
18+
const obj = { res: true }
19+
dfs(source)
20+
return obj.res
21+
function dfs(node) {
22+
if((outm.get(node) == null || outm.get(node).size === 0) && node !== destination) {
23+
obj.res = false
24+
return
25+
}
26+
if(visited.has(node)) {
27+
obj.res = false
28+
return
29+
}
30+
if(outm.get(node) == null) return
31+
visited.add(node)
32+
for(let e of outm.get(node)) {
33+
if(obj.res) dfs(e)
34+
}
35+
visited.delete(node)
36+
}
37+
};

0 commit comments

Comments
 (0)