1.染色法判断二分图
class Solution {
int[] color;
int[][] g;
public boolean dfs(int i, int v){
color[i]=v;
for (int node: g[i]){
if (color[node]==0){
if(!dfs(node,3-v)) return false;
}
else if (color[node]==v) return false;
}
return true;
}
public boolean isBipartite(int[][] graph) {
//染色法判断二分图
this.g = graph;
int n=graph.length;
color = new int[n];
for (int i=0;i<n;i++){
if(color[i]==0){
if (!dfs(i,1)) return false;
}
}
return true;
}
}