二分图 学习笔记

news/2024/10/14 9:31:06
相关链接

题单:https://www.luogu.com.cn/training/79728

文章:https://www.cnblogs.com/streamazure/p/13778319.html

https://oi-wiki.org/graph/bi-graph/

二分图的判定

如果一张无向图,可以将图中的点分成两个集合 \(A,B\),使得同一个集合的所有点互不相交,那么它即是一个二分图,\(A\) 是集合的左部,\(B\) 是集合的右部。
image
如图即是一个二分图,\(A\) 包含了 \({1,4,6}\)\(B\) 包含了 \(2,3,5\)

二分图的性质有这些:

  • 对二分图进行染色,相邻的点不可以染同色,用两个颜色即可覆盖这个图。
  • 二分图没有长度为奇数的环,因为每一次都会从一个一个集合到另一个集合。

我们可以运用这些性质来进行判定。每次从一个未染色点出发,如果有颜色而且是同色,那么不是二分图,否则给相邻的点染上反色,并继续向下搜索。
关联题目:P1330 封锁阳光大学

代码
#define maxn 10050
int n,m;
vector<int>G[maxn];
int col[maxn],bel[maxn];
int sum[3][maxn];
bool flg=0;
bool dfs(int now,int c,int nth) {col[now]=c; bel[now]=nth;for(auto nxt:G[now]) {if(col[nxt]==c) return 0; if(!col[nxt]&&!dfs(nxt,3-c,nth)) return 0; }return 1;
}
signed main() {in2(n,m);For(i,1,m) {int a,b;in2(a,b);pb(G[a],b);pb(G[b],a);}int tot=0;For(i,1,n)if(!col[i]) if(!dfs(i,1,++tot))return cout<<"Impossible",0;int cnt=0;For(i,1,n) sum[col[i]][bel[i]]++;For(i,1,tot) cnt+=min(sum[1][i],sum[2][i]);cout<<cnt;
}

二分图最大匹配

匹配或是独立边集是一张图中不具有公共端点的边的集合。
左部的点集 \(A\) 和右部的点集 \(B\),枚举左部的点,尝试向右寻找一个点 \(B_i\),使得 \(B_i\) 要么暂时没有被其他左部的点选中,要么可以使得改变其他的左部点的匹配方式,使得 \(B_i\) 未被选中。
由于最大匹配的边数是确定的,所以我们可以随便选一个起点。

关联题目:P3386 【模板】二分图最大匹配

代码 ``` #define maxn 510 int n,m,e,ans,G[maxn][maxn],to[maxn],u,v; bool vis[maxn]; bool dfs(int now) {For(i,1,m) if(G[now][i]&&!vis[i]) {vis[i]=1;if(!to[i]||dfs(to[i])) return to[i]=now,1;}return 0; } signed main() {in3(n,m,e);For(i,1,e) in2(u,v),G[u][v]=1;For(i,1,n) m0(vis),ans+=dfs(i);cout<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/71335.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

裸露土堆识别算法

裸露土堆识别算法基于人工智能视觉分析技术,裸露土堆识别算法通过对路面/建筑工地的图像进行处理和分析,判断土堆的裸露情况。裸露土堆识别算法首先利用图像处理技术,提取出图像中的土堆区域。然后,通过计算土堆中被绿色防尘网覆盖的比例,判断土堆是否裸露。若超过40%的土…

相位滞后校正

.rtcContent { padding: 30px } .lineNode { font-size: 10pt; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-style: normal; font-weight: normal }% 2024年10月13日 无锡岚莅电气 刘晓东 整理 《MATLAB与SIMULINK工程应用》 Mokhtari著中…

Nacos-2.0.4 安装

1、配置环境变量 正确安装好JDK11、并配置JAVA_HOME环境变量 2、安装Nacos ​ 将Nacos压缩包解压到英文目录下即可 3、导入SQL创建名为nacos的数据库 导入nacos\conf\nacos-mysql.sql文件到nacos数据库中 修改nacos\conf\application.properties配置文件4、启动Nacos DOS进入na…

不系安全带抓拍自动识别系统

不系安全带抓拍自动识别系统的原理是通过摄像头和图像识别算法,不系安全带抓拍自动识别系统对高空作业人员的穿戴行为进行实时监测和识别。系统利用高清摄像头,对高空作业场景进行监控,当检测到人员未佩戴安全带时,不系安全带抓拍自动识别系统会自动抓拍并进行安全带识别,…

APK 加固方案

1:APK的解压后的结构: 2:如何反编译: 3:apk的打包流程: 4:应用的启动流程 5:原理: 1)APP发送attach ApplicationThread到AMS的时候,会读取清单文件manifest里面的application,那我们就用ProxyApplicaiton替换掉原生的application,这样就走到了加密的applicatio…

cmd批量创建文件和文件夹

批量创建文件夹 在当前文件夹下批量创建文件夹for /l %i in (start,setp,end) do md 新建文件夹%istart:起始数字 setp:步长 end:结束数字 md表示创建文件夹在指定路径下批量创建文件夹在D:\test\下创创建编号为2~10的文件夹:for /l %i in (2,1,10) do md D:\test\新建文件…

医疗数据安全新挑战:内外网文件摆渡技术的应对之道!

基于法规要求和自身安全管理需要,医院一般会通过防火墙或网闸,将网络隔离为院内网和院外网。内网运行重要的业务系统,有大量电子病例、检查报告、影像数据、物资数据等重要数据,需要严格保护,外网为日常办公和对外业务系统。网络隔离后,仍存在内外网文件摆渡的场景需求:…

从零开始学机器学习——了解分类算法

分类算法 首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns 分类算法是监督学习的一种重要方法,它与回归算法在许多方面有相似之处。监督学习的核心目标是利用已有的数据集进行预测,无论是数值型数据还是类别型数据。具体而言,分类算法主要用于将输入数…