// 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;
}