LeetCode - 785. Is Graph Bipartite?

Posted antonliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode - 785. Is Graph Bipartite?相关的知识,希望对你有一定的参考价值。

判断一个给定图是不是二分图. 题目提供一个用二维数组存储的邻接表. 常规的二分图判断,点着色.

注意要将图存入类中,因为dfs需要访问图中的点.

 

 1 class Solution 
 2     private int[][] graph;
 3     private boolean[] visited;
 4     private int[] colors;
 5 
 6     public boolean isBipartite(int[][] graph) 
 7         this.graph = graph;
 8         int V = graph.length;
 9         visited = new boolean[V];
10         colors = new int[V];
11 
12         for (int v = 0; v < V; v++)
13             if (!visited[v])
14                 if(!dfs(v, 0))
15                     return false;
16         return true;
17     
18 
19     private boolean dfs(int v, int color) 
20         visited[v] = true;
21         colors[v] = color;
22         for (int w : graph[v]) 
23             if (!visited[w]) 
24                 if (!dfs(w, 1 - color))
25                     return false;
26             
27             else if (colors[v] == colors[w])
28                 return false;
29         
30         return true;
31     
32 

以上是关于LeetCode - 785. Is Graph Bipartite?的主要内容,如果未能解决你的问题,请参考以下文章

[leetcode]785. Is Graph Bipartite? [bai'pɑrtait] 判断二分图

LeetCode 785. 判断二分图 | Python

LWC 72: 785. Is Graph Bipartite?

785.Is Graph Bipartite?

785. Is Graph Bipartite?( 判断是否为二分图)

785. Is Graph Bipartite?从两个集合中取点构图