2
public List<Integer> eventualSafeNodes(int[][] graph) {4
List<Integer> ans = new ArrayList<>();6
boolean visited[] = new boolean[n];7
boolean dfsVisited[] = new boolean[n];9
boolean nodeCycles[] = new boolean[n];11
for (int i = 0; i < n; i++) {12
if (visited[i] == false) {13
isCycle(i, graph, dfsVisited, visited, nodeCycles);16
for (int i = 0; i < nodeCycles.length; i++) {17
if (nodeCycles[i] == false) ans.add(i);22
public boolean isCycle(23
int node, int graph[][], boolean dfsVisited[], boolean visited[], boolean[] nodeCycles) {25
dfsVisited[node] = true;27
for (int adjNode : graph[node]) {28
if (visited[adjNode] == false) {29
if (isCycle(adjNode, graph, dfsVisited, visited, nodeCycles))30
return nodeCycles[node] = true;31
} else if (visited[adjNode] == true && dfsVisited[adjNode] == true) {32
return nodeCycles[node] = true;35
dfsVisited[node] = false;