Skip to main content

Command Palette

Search for a command to run...

code in java

Updated
•1 min read•View as Markdown
import java.util.*;

class Solution {
    public boolean isCycle(int V, int[][] edges) {
        // Step 1: Build the adjacency list from edge list
        List<List<Integer>> adj = new ArrayList<>();
        for (int i = 0; i < V; i++) {
            adj.add(new ArrayList<>());
        }
        for (int[] edge : edges) {
            int u = edge[0], v = edge[1];
            adj.get(u).add(v);
            adj.get(v).add(u);  // Undirected graph
        }

        // Step 2: Initialize visited array
        boolean[] visited = new boolean[V];

        // Step 3: Call DFS for each unvisited node
        for (int i = 1; i < V; i++) {
            if (!visited[i]) {
                if (dfs(i, -1, visited, adj)) {
                    return true;  // cycle found
                }
            }
        }

        return false;  // no cycle found
    }

    // DFS helper function
    private boolean dfs(int node, int parent, boolean[] visited, List<List<Integer>> adj) {
        visited[node] = true;

        for (int neighbor : adj.get(node)) {
            if (!visited[neighbor]) {
                if (dfs(neighbor, node, visited, adj)) {
                    return true;
                }
            } else if (neighbor != parent) {
                return true;  // Cycle detected
            }
        }

        return false;
    }
}

More from this blog

codebhghvhv

34 posts