Skip to content

Latest commit

 

History

History
40 lines (37 loc) · 1.01 KB

12.md

File metadata and controls

40 lines (37 loc) · 1.01 KB
 bool detect(int i, vector<int> adj[], int vis[])
    {
        vis[i]=1;
        queue<pair<int,int>>q;
        q.push({i,-1});
        
        while(!q.empty())
        {
            int node = q.front().first;
            int parent = q.front().second;
            
            q.pop();
            for(auto adjacent:adj[node])
            {
                if(!vis[adjacent])
                {
                    vis[adjacent]=1;
                    q.push({adjacent,node});
                }
                else if(adjacent != parent)
                    return true;
            }
        }
        return false;
    }
    bool isCycle(int V, vector<int> adj[]) {
        int vis[V] = {0};
        for(int i = 0; i < V; i++)
        {
            if(!vis[i])
            {
                if(detect(i,adj,vis)) return true;
            }
        }
        return false;
    }