判断二分图
Posted realzhaijiayu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断二分图相关的知识,希望对你有一定的参考价值。
思路
染色问题,可以使用dfs,也可以使用bfs
代码
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;
}
}
}
}
以上是关于判断二分图的主要内容,如果未能解决你的问题,请参考以下文章