首页 > 其他分享 >图论——二分图 学习笔记

图论——二分图 学习笔记

时间:2023-11-17 09:44:35浏览次数:52  
标签:二分 图论 return int graph 染成 笔记 col

图论——二分图 学习笔记

定义

二分图,又称二部图,英文名叫 Bipartite graph。

定义为,一个图,可以将节点划分为两个集合,而集合内部没有相连的边。如图:

image

性质

  1. 如果对二分图黑白染色,那么每条边两边对应的一定是一个黑点、一个白点;
  2. 不存在长度为奇数的环,因为只有偶数条边,才能从一个集合回到这个集合。

判定

有两种方法。

第一种是根据性质 \(2\),我们可以 DFS 或 BFS 遍历这张图,如果发现奇环,说明不是二分图。

另一种方法是染色法,即,我们设每个节点有三种状态 \(0/1/2\),分别表示「未被染色」「被染成黑色」「被染成白色」,显然当我们把一个节点染成颜色 \(x\),那么与它相邻的节点只能被染成 \(3-x\) 颜色,如果在染色过程中发现不匹配,则说明不是二分图。

代码:

struct {
    bool check(graph_t &e) {
        int n = e.n; vector<int> col(n + 1);
        function<bool(int, int)> dfs = [&] (int u, int c) {
            col[u] = c; for (int v : e.g[u]) {
                if (col[v] == c) return false;
                else if (col[v]) continue;
                if (!dfs(v, 3 - c)) return false;
            } return true;
        }; rep(i, n) if (!col[i + 1] && !dfs(i + 1, 1)) return false;
        return true;
    }
} bi_graph;

二分图最大匹配

不大会。

练习题

见:https://www.luogu.com.cn/training/419020

Reference

[1] https://oi-wiki.org/graph/bi-graph/
[2] https://www.luogu.com.cn/blog/ilibilib/solution-at-abc327-d

标签:二分,图论,return,int,graph,染成,笔记,col
From: https://www.cnblogs.com/RainPPR/p/bipartite-graph.html

相关文章

  • Yacc笔记
    语义动是一个C语句的序列$$表是和相应产生式头的非终结符号关联的属性值$i 表示和相应产生式体中第i个文法符号(终结符或非终结符号)关联的属性值按照产生式规约时会执行关联的语义动作对于体中只包含一个文法符号的产生式,默认语义动作就是拷贝属性值 ......
  • 【刷题笔记】111. Minimum Depth of Binary Tree
    题目Givenabinarytree,finditsminimumdepth.Theminimumdepthisthenumberofnodesalongtheshortestpathfromtherootnodedowntothenearestleafnode.Note: Aleafisanodewithnochildren.Example:Givenbinarytree [3,9,20,null,null,15,7],......
  • C++笔记
    inline内联函数:内存膨胀,空间换时间,节省调用函数,给被调函数形参赋值以及自动回收内存的时间使用原则:内联函数内不要有循环,使用重复率较高,代码比较简单的函数使用内联函数引用(别名,解析引用符)int&dd=numdd与num共享同一段内存,定义引用必须赋初始值,引用的作用可以缩短名称......
  • # FPGA入门笔记002——译码器
    设计一个38译码器项目文件编写:modulemy3_8( a, b, c, out); inputa; //输入端口A inputb; //输入端口B inputc; //输入端口C outputreg[7:0]out; //输出端口 /* always块: '()'内部为敏感信号,当a、b、c有一个信号发生变化时,执行always块中的语句 凡是在al......
  • 支持向量机 SVM(Supported Vector Machine)笔记
    简单可视化对偶性:图片出自:【数之道25】机器学习必经之路-SVM支持向量机的数学精华......
  • esp32笔记[10]-rust驱动ssd1306显示屏
    摘要使用rust(no-std)环境和esp-hal库实现SSD1306显示屏(128x64)显示bmp图片.平台信息esp32(模组:ESP32-WROOM-32D)(xtensalx6)(xtensa-esp32-none-elf)rust超链接esp32笔记[7]-使用rust+zig开发入门原理简介rust的include_bytes!宏Rust的include_bytes!宏可以用......
  • openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性
    openGauss学习笔记-125openGauss数据库管理-设置账本数据库-校验账本数据一致性125.1前提条件数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。125.2背景信息账本数据库校验功能目前提供两种校验接口,分别为:ledger......
  • 11.16 基本完成个人任务管理系统项目后重新复习JavaScript高级程序设计——声明var与l
    我看的是js高级程序设计第四版,前两章快速了解了一下,第三章开始慢啃,虽然内容枯燥,很多东西自己也知道了,但还是有一些收获的。比如,声明变量的三个关键词:var、let、const;var以前经常用但是会出问题,相比let没有那么严谨(var声明范围函数作用域,而let声明范围块级作用域)。看个例子:这是v......
  • 学习笔记10——20211303
    一、学习任务自学教材第12章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:......
  • 深度学习笔记:搭建基于Python的tensorflow运行环境1
    使用python3命令创建tensorflow虚拟运行环境首先,在系统下创建python虚拟环境目录Venvs,本文我们设置的虚拟环境目录如下:C:\Users\wuchh\venvs,接下来打开cmd命令窗口进入创建的目录(C:\Users\wuchh\venvs)。在命令行窗口中,执行创建虚拟环境的python3命令,我们将创建一个名为......