[模板]匈牙利算法(二分图匹配)
洛谷P3386
我还是比较喜欢叫它——谈恋爱算法。。。详见 二分图匹配详解
注意:判断的条件是:if(f[x][i]==1&&used[i]==0)
其他没什么了,如果每次用memset会超时,可以使用二维数组记录
1 #include<bits/stdc++.h> 2 using namespace std; 3 inline int sc() 4 { int x=0,f=1;char ch=getchar(); 5 while(!isdigit(ch)){ if(ch==45)f=-1;ch=getchar();} 6 while(isdigit(ch)) { x=x*10+ch-48;ch=getchar();} 7 return x*f; 8 } 9 int f[1010][1010],lk[1010],n,m,e; 10 bool vis[1010]; 11 bool find(int x) 12 { for(int i=1;i<=m;i++) 13 { if(f[x][i]==1&&vis[i]==0) 14 { vis[i]=1; 15 if(lk[i]==0||find(lk[i])) 16 return lk[i]=x,1; 17 } 18 } 19 return false; 20 } 21 int main() 22 { n=sc();m=sc();e=sc(); 23 for(int i=1;i<=e;i++) 24 { int u=sc(),v=sc(); 25 if(u>n||v>m)continue; 26 f[u][v]=1; 27 } 28 int cnt=0; 29 for(int i=1;i<=n;i++) 30 { memset(vis,0,sizeof(vis)); 31 if(find(i)) cnt++; 32 } 33 cout<<cnt<<endl; 34 return 0; 35 }
转载于:https://www.cnblogs.com/Slager-Z/p/7784502.html
[模板]匈牙利算法(二分图匹配)相关推荐
- 【HDU - 5943】Kingdom of Obsession(数论,素数间隔结论,构造,思维,匈牙利算法,匹配问题)
题干: There is a kindom of obsession, so people in this kingdom do things very strictly. They name the ...
- 【模板】匈牙利算法 二分图最大匹配题模板
[任务] 给定一个二分图,用匈牙利算法求这个二分图的最大匹配数. [说明] 求最大匹配,那么我们希望每一个在左边的点都尽量找到右边的一个点和它匹配. 我们一次枚举左边的点x的所有出边指向的点y, 若y ...
- 浅谈匈牙利算法(二分图最大匹配)
前置知识 一张图是二分图,当且仅当它的点可以被分成两部分,而这张图上的所有边的两个端点,都分属不同的部分.我们称这两个点集,一个叫左部,一个叫右部.左部中的点叫左部点:右部中的点叫右部点. 一张图的一 ...
- NOI图论算法:二分图匹配
二分图匹配 算法竞赛入门经典训练指南+陈锋+ch5.5_二分图的匹配 https://www.bilibili.com/video/BV1j5411x7PU SWPU-ACM每周算法讲堂-匈牙利算法 ...
- POJ-3041 匈牙利算法 二分图最大匹配
踢以 给出多个点的坐标 有一种攻击 可以把一次干掉同一列的 或者干掉同一行的 求最少的攻击次数 肥西 由于问题是问选取最少的行和列干掉所有的陨石 可以把输入的r和c看成r和c之间有一条连边因为要实现干 ...
- 【Step1】【二分图匹配】poj 1274-The Perfect Stall
题目链接 题目大意 输入数据中,第一行给出n,表示n个奶牛. 接下来n行,每行一个x,xi表示第i头奶牛可以选择x个谷仓中的一个进行匹配.接下来x个数,表示谷仓的编号(1~n之间) 一个谷仓也只能有一 ...
- 匈牙利算法解决二分图匹配问题
匈牙利算法是由匈牙利数学家Edmonds于1965年提出.匈牙利算法是基于Hall定理中充分性证明的思想,它是二分图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的 ...
- 二分图匹配Hopcroft-Carp算法介绍
我们在做二分图匹配的时候,最喜欢选择的就是匈牙利算法,但是我们可以知道匈牙利算法的复杂度是O(n*e),那么如果对于一个点和边比较多的图,匈牙利算法很容易超时,所以我们采用Hopcroft-Carp算 ...
- 染色法判定二分图 匈牙利算法
染色法判定二分图 思路:相邻的点染不同颜色 看能不能染完 如果过程中出现相邻点相同颜色,就不可以 注意:需要遍历n个点 看此点是否被染色过 如果没有就进行一次dfs或bfs 二分图:可以把点分成两个集 ...
- 多目标跟踪之匈牙利算法
0 前言 目标跟踪(Object Tracking)是自动驾驶中非常常见的任务,根据跟踪目标数量的不同,目标跟踪可分为: 单目标跟踪(Single Object Tracking,SOT) 多目标跟踪 ...
最新文章
- C/C++中extern关键字详解
- 博客中最快捷的公式显示方式:Mathjax + Lyx
- 史上最快! 10小时大数据入门实战(五)-分布式计算框架MapReduce
- mysql5.7+ 虚拟列,json使用初体验
- php数组为什么其他语言,PHP语言特性和各版本的差异
- NTU -SCSE-orientation
- 监控程序崩溃重启_第十四章 Homeassistant服务器安全及状态监控(下)
- Kafka分区分配计算(分区器Partitions)
- 计算机信息技术为教育带来的变化,信息技术对课堂教学带来的变化
- 【Linux】Linux查看机器负载-CPU负载 CPU使用率达到100%
- LA 4123 (计数 递推) Glenbow Museum
- Log4j日志使用记录
- 算法-满足条件的数字放在新数组
- mysql表添加字段_怎么给mysql数据表添加字段
- 【bzoj 3252】攻略
- linux中安装typecho的pathinfo配置
- 泰山OFFICE在LINUX上输入法候选框位置错误的两个解决思路
- Matlab学习第一部分:基础知识
- 如何用VsCode进行Debug
- 爬虫篇——采集单机游戏(网页游戏),爬取小游戏