1
/**
2
* @param {number} n
3
* @param {number[][]} edges
4
* @param {number[]} restricted
5
* @return {number}
6
*/
7
var reachableNodes = function (n, edges, restricted) {
8
const adj = {};
9

10
for (const [u, v] of edges) {
11
if (adj[u]) {
12
adj[u].add(v);
13
} else {
14
adj[u] = new Set().add(v);
15
}
16
if (adj[v]) {
17
adj[v].add(u);
18
} else {
19
adj[v] = new Set().add(u);
20
}
21
}
22

23
const restrictedSet = new Set(restricted);
24
const visited = new Set();
25

26
let ans = 0;
27

28
function dfs(node) {
29
if (restrictedSet.has(node) || visited.has(node)) {
30
return;
31
}
32

33
ans++;
34
visited.add(node);
35

36
for (const adjNode of adj[node]) {
37
dfs(adjNode);
38
}
39
}
40

41
dfs(0);
42

43
return ans;
44
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0