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 };

浙公网安备 33010602011771号