3
int reachableNodes(int n, vector<vector<int>> &edges, vector<int> &restricted) {9
// Count varable to keep count of traversed nodes.12
// Mark all restricted node as visited.13
for (int i = 0; i < restricted.size(); i++) vis[restricted[i]] = 1;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]);21
// Perform normal DFS starting from 0th node.22
dfs(adj, vis, 0, cnt);27
void dfs(vector<int> adj[], vector<int> &vis, int node, int &cnt) {31
for (auto it : adj[node]) {32
if (!vis[it]) dfs(adj, vis, it, cnt);