1
class Solution {
2
public:
3
int reachableNodes(int n, vector<vector<int>> &edges, vector<int> &restricted) {
4
vector<int> adj[n];
5

6
// A visited array.
7
vector<int> vis(n, 0);
8

9
// Count varable to keep count of traversed nodes.
10
int cnt = 0;
11

12
// Mark all restricted node as visited.
13
for (int i = 0; i < restricted.size(); i++) vis[restricted[i]] = 1;
14

15
// Make adjency list.
16
for (int i = 0; i < edges.size(); i++) {
17
adj[edges[i][0]].push_back(edges[i][1]);
18
adj[edges[i][1]].push_back(edges[i][0]);
19
}
20

21
// Perform normal DFS starting from 0th node.
22
dfs(adj, vis, 0, cnt);
23

24
return cnt;
25
}
26

27
void dfs(vector<int> adj[], vector<int> &vis, int node, int &cnt) {
28
vis[node] = 1;
29
cnt++;
30

31
for (auto it : adj[node]) {
32
if (!vis[it]) dfs(adj, vis, it, cnt);
33
}
34
}
35
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0