小九九 发表于 2023-8-14 16:01:38

编写一个程序,判断一个图是否为二分图。

def is_bipartite(graph):
   color = {}# 用于记录每个节点的颜色

   def dfs(node, c):
       color = c

       for neighbor in graph:
         if neighbor not in color:
               if not dfs(neighbor, 1 - c):
                   return False
         elif color == c:
               return False

       return True

   for node in graph:
       if node not in color:
         if not dfs(node, 0):
               return False
   
   return True

# 测试
graph = {
    'A': ['B', 'C'],
    'B': ['A', 'D'],
    'C': ['A', 'D'],
    'D': ['B', 'C']
}
print(is_bipartite(graph))# 输出 True

graph = {
    'A': ['B', 'C'],
    'B': ['A', 'C'],
    'C': ['A', 'B']
}
print(is_bipartite(graph))# 输出 False


页: [1]
查看完整版本: 编写一个程序,判断一个图是否为二分图。