class Solution {
private:
bool ok=true;
vector<bool>color;
vector<bool>visited;
void traverse(vector<vector<int>>& graph,int v){
if(!ok){
return ;
}
visitedv=true;
for(int w:graphv){
if(!visitedw){
colorw=!colorv;
traverse(graph,w);
}else{
if(colorw==colorv){
ok=false;
}
}
}
}
public:
bool isBipartite(vector<vector<int>>& graph) {
int n = graph.size();
color = vector<bool>(n);
visited=vector<bool>(n);
for(int v=0;v<n;v++){
if(!visitedv){
traverse(graph,v);
}
}
return ok;
}
};