云盘资源分享论坛

 找回密码
 立即注册
搜索
热搜: 书籍 电影 音乐
查看: 152|回复: 0

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

[复制链接]

966

主题

156

回帖

4492

积分

中级会员

Rank: 3Rank: 3

UID
32013
金钱
3371
钻石
7
积分
4492
注册时间
2023-7-27
发表于 2023-8-14 16:01:38 | 显示全部楼层 |阅读模式

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

  3.    def dfs(node, c):
  4.        color[node] = c

  5.        for neighbor in graph[node]:
  6.            if neighbor not in color:
  7.                if not dfs(neighbor, 1 - c):
  8.                    return False
  9.            elif color[neighbor] == c:
  10.                return False

  11.        return True

  12.    for node in graph:
  13.        if node not in color:
  14.            if not dfs(node, 0):
  15.                return False
  16.    
  17.    return True

  18. # 测试
  19. graph = {
  20.     'A': ['B', 'C'],
  21.     'B': ['A', 'D'],
  22.     'C': ['A', 'D'],
  23.     'D': ['B', 'C']
  24. }
  25. print(is_bipartite(graph))  # 输出 True

  26. graph = {
  27.     'A': ['B', 'C'],
  28.     'B': ['A', 'C'],
  29.     'C': ['A', 'B']
  30. }
  31. print(is_bipartite(graph))  # 输出 False
复制代码


盘基地论坛免责声明
1、本站资源来自互联网用户收集发布,仅供用于学习和交流。
2、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。
3、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决。
4、联系邮箱:admin@panjdzy.com
5、官方网址:www.panjdzy.com
6、备用网址:www.panjd.top




上一篇:编写一个程序,计算一个字符串中各个字符出现的次数。
下一篇:编写一个 猜数字游戏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|云盘资源分享论坛

GMT+8, 2025-6-25 15:46

Powered by Discuz!    联系邮箱:admin@panjdzy.com

本站资源来自互联网用户收集发布,仅供用于学习和交流。

如有侵权之处,请联系站长并出示版权证明以便删除,敬请谅解!

快速回复 返回顶部 返回列表