当前位置: 首页 > 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;
}

相关文章:

  • 深入解析 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实现的动态导航引导页技术解析
  • 从“高阶智驾”到“辅助驾驶”,上海车展上的“智驾”宣发变调
  • 拉卡拉一季度净利约1亿降超五成,去年净利3.5亿降逾23%
  • 上海车展的“老头乐”,又升级了
  • 新华视点丨广西抗旱一线调查
  • 上海市长会见璞跃全球创始人亚美迪,建设国际AI创新创业网络中心节点
  • 明日出征!航天员详细信息来啦