Cycle in the graph
static boolean hasCycle(ArrayList<graphNode> graph){
HashMap<graphNode,Integer> visited = new HashMap<>();
for(graphNode node : graph)
visited.put(node,0);
for(graphNode node : graph)
if(visited.get(node)==0)
if(dfs(node,visited)){
return true;
}
return false;
}
static boolean dfs(graphNode node, HashMap<graphNode,Integer> visited){
if(visited.get(node)==1) return true;
visited.put(node,1);
for(graphNode neighbor : node.neighbors){
if(visited.get(neighbor)!=2)
if(dfs(neighbor,visited)) return true;
}
visited.put(node,2);
return false;
}