当前位置: 首页 > news >正文

图论---染色法(判断是否为二分图)

O(n+m)

二分图:可以把所有的点划分到两边,使得边只在集合之间,集合内部没有边。

二分图当且仅当图中不含奇数环(边数为奇数条)

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;const int N = 100010;
int n, m;
vector<int> g[N]; // 邻接表存图
int color[N];bool dfs(int u, int c) {color[u] = c;for (int j : g[u]) { // 遍历所有邻接点if (!color[j]) {if (!dfs(j, 3 - c)) return false;}else if (color[j] == c) return false;}return true;
}int main() {cin >> n >> m;while (m--) {int a, b;cin >> a >> b;g[a].push_back(b);g[b].push_back(a); // 无向图,双向加边}bool flag = true;for (int i = 1; i <= n; i++) {if (!color[i]) {if (!dfs(i, 1)) {flag = false;break;}}}if (flag) puts("Yes");else puts("No");return 0;
}

http://www.dtcms.com/a/155703.html

相关文章:

  • 深入解析 SMB 相关命令:smbmap、smbclient、netexec 等工具的使用指南
  • Python爬虫实战:获取网yi新闻网财经信息并做数据分析,以供选股做参考
  • 基于51单片机的超声波液位测量与控制系统
  • PMIC PCA9450 硬件原理全解析:为 i.MX 8M 平台供电的“大脑”
  • 23种设计模式-行为型模式之责任链模式(Java版本)
  • 4/24杂想
  • 30分钟算法题完成
  • 使用命令行加密混淆C#程序
  • python中的logging库详细解析
  • AI超级智能体教程(三)---程序调用AI大模型的四种方式(SpringAI+LangChain4j+SDK+HTTP)
  • 二项式分布html实验
  • Low Poly 风格 | 飞机飞行可视化系统
  • 【计算机视觉】CV实战- 深入解析基于HOG+SVM的行人检测系统:Pedestrian Detection
  • 深入解析Mlivus Cloud核心架构:rootcoord组件的最佳实践与调优指南
  • 防火墙技术深度解析:从包过滤到云原生防火墙的部署与实战
  • 软测面经(私)
  • API/SDK
  • 【金仓数据库征文】金仓数据库:开启未来技术脑洞,探索数据库无限可能
  • 【基于Qt的QQMusic项目演示第一章】从界面交互到核心功能实现
  • 基于HTML+CSS实现的动态导航引导页技术解析
  • 数字孪生:从概念到实践,重构未来产业的“虚拟镜像”
  • Java实现背景图片加自适应水印图片
  • Android 编译问题 prebuilts/clang/host/linux-x86
  • Node.js 包管理工具介绍
  • 彻底卸载Python
  • 深入了解Activiti工作流引擎:从基础到实战
  • github把自己的jar包发送到maven中央仓库
  • 技术书籍推荐(003)
  • 用node打开一个网页
  • 为什么使用Throwable app不崩溃,使用Exception会崩溃