题目
解析
二分图,其实就是把点分成两个集合
使用BFS,相邻曾的节点属于不同的集合,如果在BFS的过程中遇到了之前访问过的节点,就说明不能分成两个集合
答案
//BFS
class Solution {
public:
bool isBipartite(vector<vector<int>>& graph) {
vector<int> colors(graph.size(),0);
queue<int> q;
while(!q.empty()){
q.pop();
}
for(int i=0;i<graph.size();i++){
if(colors[i]) continue;
colors[i]=1;
q.push(i);
while(!q.empty()){
int t=q.front(); q.pop();
for(int i=0;i<graph[t].size();i++){
int j=graph[t][i];
if(colors[j]==colors[t]) return false;
if(colors[j]) continue;
colors[j]=colors[t]*(-1);
q.push(j);
}
}
}
return true;
}
};