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

黑白染色方法

主要有 \(3\) 种方法:DFS / BFS / DSU

  1. DFS

直接遍历整张图染色,判断是否产生冲突

init(){for(int i=1;i<=n;i++) col[i]=-1;
}
bool dfs(int u,int c){col[u]=c;for(auto v:e[u]){if(col[v]==-1) return dfs(v,c^1);else if(col[v]==c) return false;}return true;
}
...
bool op=dfs(1,0);
//直接任意一点任意颜色开始即可
  1. BFS

跟 DFS 一样,只不过遍历的方式换了而已,不过多赘述。

  1. DSU

并查集可以讲一下,这个是比较方便的方法。

维护一个扩展域并查集,对于节点 \(i\) , 维护与它颜色相同的集合 \(i\) 和颜色不同的集合 \(i+n\)

我们只需要枚举每一条边 \((u,v)\) ,然后将 \(u\)\(v\) 合并,关于合并,我们假定 \(u\)\(v\) 颜色不同,然后将 \(u\) 颜色相同的\(v\) 颜色不同的 合并,将 \(v\) 颜色相同的\(u\) 颜色不同的 合并。

全部合并完后我们就要去检查每个点 \(i\) 的颜色相同与颜色不同的集合是否冲突。

struct DSU{
...
}dsu;for(int u=1;u<=n;u++)for(int v:e[u])dsu.merge(u,v+n),dsu.merge(v,u+n);for(int i=1;i<=n;i++)if(find(i)==find(i+n)){cout<<"No";return 0;}
cout<<"Yes";
http://www.wxhsa.cn/company.asp?id=7679

相关文章:

  • Windows 数字签名获取与验证详解
  • 转化率提升300%,火山引擎Data Agent以“一客一策”突破企业营销增长瓶颈
  • 矩阵模板
  • 快读模板
  • ipadװwindowsϵͳshell
  • cpu的各种寄存器及其功能
  • 如何关闭电视的ACR功能及其对隐私保护的重大意义
  • huggingface 模型权重文件
  • vscode设置单击选中带连字符的单词
  • P4147 玉蟾宫(悬线法)
  • 全局平衡二叉树
  • Transactional注解的方法里 spring怎么知道我用的是哪个jdbctemplate实例
  • 根据参数查询
  • 关于非侵入式脑机接口面向C端一个应用想法
  • Blelloch并行扫描算法
  • 国产化DevOps生态崛起:Gitee如何赋能企业数字化转型
  • 【IEEE出版】2025年电气、控制与人工智能国际学术会议(ICOECAI 2025)
  • 采购计划 vs 物料需求计划(MRP),采购新手最容易搞混的两份“清单”!
  • P10299 [CCC 2024 S5] Chocolate Bar Partition
  • 实用指南:企业实施数字化转型时常见的挑战
  • 当ARMxy+AI边缘计算落地水泵行业就碰撞出怎样的火花?
  • QN8035 FM芯片驱动开发
  • 再见 Claude Code,我选择了 Codex!真香!!
  • 2025中国DevOps工具生态全景:本土化突围与智能化跃迁
  • 字符串转 python 对象 eval
  • 蛋白多序列比对美化
  • Gitee推出Remote mcp-gitee:云端MCP服务开启智能协作新时代
  • Gitee DevOps平台:驱动中国企业数字化转型的核心引擎
  • 10 类多布局扫描图像数据集:支撑 OCR 精度提升与 VLM 微调,覆盖广告 / 简历 / 论文等场景的计算机视觉训练数据
  • 国产化Excel开发组件Spire.XLS教程:C# 轻松将 DataSet 导出到 Excel