leetcode 785 染色法判断二分图

 1 class Solution {
 2 public:
 3     bool isBipartite(vector<vector<int>>& graph) {
 4         int n=graph.size();
 5         vector<int>G[n],f(n,0);
 6         for(int i=0;i<n;i++)
 7         for(auto &p:graph[i])G[i].push_back(p);
 8         function<int(int,int)>dfs=[&](int u,int c)
 9         {
10             f[u]=c;
11             for(auto &v:G[u])
12             {
13                 if(f[v]==c)return 0;
14                 if(!f[v]&&!dfs(v,3-c))return 0; 
15             }
16             return 1;
17         };
18         for(int i=0;i<n;i++)
19         if(!f[i])if(!dfs(i,1))return false;
20         return true;
21     }
22 };

 

posted @ 2022-03-15 21:54  matt-11  阅读(23)  评论(0)    收藏  举报