3
vector<int> eventualSafeNodes(vector<vector<int>> &graph) {5
vector<bool> vis(n, false), curr_vis(n, false), safe(n, true);7
for (int i = 0; i < n; i++)8
if (!vis[i]) dfs(i, vis, curr_vis, safe, graph);11
for (int i = 0; i < n; i++)12
if (safe[i]) ans.push_back(i);17
bool dfs(int i, vector<bool> &vis, vector<bool> &curr_vis, vector<bool> &safe,18
vector<vector<int>> &graph) {19
vis[i] = true, curr_vis[i] = true;21
for (auto j : graph[i]) {23
if (dfs(j, vis, curr_vis, safe, graph) == false) return safe[i] = false;24
} else if (curr_vis[j])25
return safe[i] = false;