// Driver function for(int i = 0; i < V; i++){ if(!vis[i]) { if(cycleBFS(i, vis, adj)) return true; } } // cycle check fun by BFS bool cycleBFS(int src, vector<int> &vis, vector<int> adj[]){ queue<pair<int,int>> q; vis[src] = 1; q.push({src,-1}); while(!q.empty()){ int node = q.front().first; int parent = q.front().second; q.pop(); for(auto it: adj[node]){ if(!vis[it]){ vis[it] = 1; q.push({it, node}); } else if(parent != it){ return true; } } } return false; }