把相邻顶点染成不同颜色的问题叫做图着色问题。对图进行染色所需要的最小颜色数目叫做最小作色数字。最小作色数为2的叫做二分图。
class Solution(object):
def isBipartite(self, graph):
"""
:type graph: List[List[int]]
:rtype: bool
"""
def dfs(v,c):
color[v] = c
for i in range(0,len(graph[v])):
# 如果相邻的顶点同色,则返回False
if color[graph[v][i]]==c:return False
# 如果相邻的顶点还没被染色 染成-c
if color[graph[v][i]]==0 and not dfs(graph[v][i],-c):return False
# 如果所有的顶点都染色了 返回True
return True
color = [0 for _ in range(len(graph))]
for i in range(len(graph)):
if color[i]==0:
if not dfs(i,1):
return False
return True
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。