LC.785. 判断二分图

LC.785. 判断二分图

原来写的都是假的染色法。

本题 W A WA WA点:可能有孤立点,如果从该点 b f s bfs bfs就会出现直接返回 t r u e true true,而其他点又不能组成二分图。另外本题可能存在不止一个二分图,所以将每个未染色点的 b f s bfs bfs一下。

class Solution {
public:
    int col[100050];
    bool bfs(vector<vector<int>>& g,int s){
         queue<int>q;
         q.push(s);
         col[s]=1;
         while(!q.empty()){
             int u=q.front();q.pop();
             for(auto v:g[u]){
                 if(!col[v]) col[v]=-col[u],q.push(v);
                 else if(col[u]==col[v]) return 0;
             }
         }
        return 1;
    }
    bool isBipartite(vector<vector<int>>& g) {
         for(int i=0;i<g.size();i++)
            if(!col[i]){
                if(!bfs(g,i)) return 0;
            }
            return 1;
    }
};

你可能感兴趣的:(二分图)