785. 判断二分图

2020-07-16  本文已影响0人  来到了没有知识的荒原

785. 判断二分图

染色法

class Solution {
public:

    vector<vector<int>> graph;
    vector<int> color;

    bool dfs(int u, int c) {
        if (color[u] && color[u] != c)return false;
        for (auto i:graph[u]) {
            if (color[i]) {
                if (color[i] == c)return false;
            } else {
                color[i] = 3 - c;
                if (!dfs(i, 3 - c))return false;
            }
        }
        return true;
    }

    bool isBipartite(vector<vector<int>> &_graph) {
        graph = _graph;
        int n = graph.size();
        color.resize(n);

        for (int i = 0; i < n; i++) {
            if (!color[i]) {
                color[i] = 1;
                if (!dfs(i, 1))return false;
            }
        }

        return true;
    }
};

上一篇 下一篇

猜你喜欢

热点阅读