标签:pre 问题 dfs int alt ali png http 二分
class Solution {
boolean valid = true;
int[][] graph;
public boolean isBipartite(int[][] graph) {
this.graph = graph;
int n = graph.length;
int[] nodes = new int[n];
for(int i = 0; i < n && valid; i++){
//对每一个为着色的结点进行着色
if(nodes[i] == 0){
dfs(i, nodes, 1);
}
}
return valid;
}
public void dfs( int index, int[] nodes, int color){
nodes[index] = color;
for(int neighbor : graph[index]){
//如果邻居结点未被着色,对其着色
if(nodes[neighbor] == 0){
dfs( neighbor, nodes, -color);
if(!valid){
return;
}
}
//如果邻居结点已经着色,但是和该结点颜色相同,不合法
else if(nodes[neighbor] == color){
valid = false;
return;
}
}
}
}
标签:pre 问题 dfs int alt ali png http 二分
原文地址:https://www.cnblogs.com/realzhaijiayu/p/13324516.html