POJ2239 二分图最大匹配
问题:POJ2239
分析:
本题给出每门课程的上课时间,求最大选课数,可以转化为二分图最大匹配问题求解。
设集合A为课程集,集合B为上课时间集,根据输入建立二分图。最大选课书就是该二分图的最大匹配数,采用匈牙利算法即可解决。
AC代码
//Memory: 252K Time: 16MS
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
;
;
int edge[maxc][maxl];
int ne[maxc];
int match[maxl];
bool vis[maxl];
int n, t;
int a, b;
bool findPath(int start)
{
; i < ne[start]; i++){
int current = edge[start][i];
if (vis[current]) continue;
vis[current] = ;
if ( !match[current] || findPath(match[current]) ){
match[current] = start;
return true;
}
}
return false;
}
int solve()
{
memset(match, , sizeof(match));
;
; i <= ; i++) {
memset(vis, , sizeof(vis));
if (findPath(i)) cnt++;
}
return cnt;
}
void input()
{
memset(edge, , sizeof(edge));
memset(ne, , sizeof(ne));
; i < n; i++){
scanf("%d", &t);
while (t--){
scanf("%d%d", &a, &b);
) * + b;
edge[ class_num ][ ne[class_num]++ ] = i;
}
}
}
int main()
{
while ( ~scanf("%d", &n) ){
input();
int ans = solve();
printf("%d\n", ans);
}
;
}
POJ2239 二分图最大匹配的更多相关文章
- POJ2239 Selecting Courses(二分图最大匹配)
题目链接 N节课,每节课在一个星期中的某一节,求最多能选几节课 好吧,想了半天没想出来,最后看了题解是二分图最大匹配,好弱 建图: 每节课 与 时间有一条边 #include <iostream ...
- POJ 2226二分图最大匹配
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图 ...
- poj 2239 二分图最大匹配,基础题
1.poj 2239 Selecting Courses 二分图最大匹配问题 2.总结:看到一个题解,直接用三维数组做的,很巧妙,很暴力.. 题意:N种课,给出时间,每种课在星期几的第几节课上 ...
- UESTC 919 SOUND OF DESTINY --二分图最大匹配+匈牙利算法
二分图最大匹配的匈牙利算法模板题. 由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3). ...
- 二分图最大匹配的König定理及其证明
二分图最大匹配的K?nig定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K?nig定理证了,其它的废话一概没有. 以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上 ...
- POJ3057 Evacuation(二分图最大匹配)
人作X部:把门按时间拆点,作Y部:如果某人能在某个时间到达某门则连边.就是个二分图最大匹配. 时间可以二分枚举,或者直接从1枚举时间然后加新边在原来的基础上进行增广. 谨记:时间是个不可忽视的维度. ...
- ZOJ1654 Place the Robots(二分图最大匹配)
最大匹配也叫最大边独立集,就是无向图中能取出两两不相邻的边的最大集合. 二分图最大匹配可以用最大流来解. 如果题目没有墙,那就是一道经典的二分图最大匹配问题: 把地图上的行和列分别作为点的X部和Y部, ...
- HDU:过山车(二分图最大匹配)
http://acm.hdu.edu.cn/showproblem.php?pid=2063 题意:有m个男,n个女,和 k 条边,求有多少对男女可以搭配. 思路:裸的二分图最大匹配,匈牙利算法. 枚 ...
- UOJ #78 二分图最大匹配
#78. 二分图最大匹配 从前一个和谐的班级,有 nl 个是男生,有 nr 个是女生.编号分别为 1,…,nl 和 1,…,nr. 有若干个这样的条件:第 v 个男生和第 u 个女生愿意结为配偶. 请 ...
随机推荐
- CVE-2014-3153 com.geohot.towelroot
futex-prevent-requeue-pi-on-same-futex.patch futex: Forbid uaddr == uaddr2 ) If uaddr == uaddr2, the ...
- hadoop SQL使用
转载自:http://slaytanic.blog.51cto.com/2057708/782175 Hive 是facebook开源的一个基于hadoop框架的查询工具,也就是说,需要用hive的话 ...
- Android 颜色大全 (colors.xml )
<resources> <color name="pink">#ffc0cb</color><!--粉红色 --> <colo ...
- IOS内存nil与release的区别
IOS内存nil与release的区别 分类: IOS内存管理 nil和release的作用: nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系:而release才是真正通知 ...
- C++类的数组元素查找最大值问题
找出一个整型数组中的元素的最大值. /*找出一个整型数组中的元素的最大值.*/ #include <iostream> using namespace std; class ArrayMa ...
- ROM包内的大致框架及各个文件的作用[转]
1.system/app这个里面主要存放的是常规的应用程序,都是以apk格式结尾的文件,在这个文件夹下面的程序为系统默认的组件,个人安装的软件不会出现在这里,而是data文件夹中. 2.system/ ...
- Windows平台的JDK安装(转)
下载Java的开发包JDK JDK有好几个类型版本,我们只需要选择Java SE类型的版本就行了.进入网页:http://www.oracle.com/technetwork/java/javase/ ...
- java 发送 http 请求
public class VoteHandler implements IVoteHandler { private static final Logger LOGGER = LoggerFactor ...
- commons-pool2-中的一些配置
/** * 连接失效检测相关 */ // 空闲时进行连接测试,会启动异步evi ...
- 自制单片机之十……AT89S51的上拉电阻问题
很多网友都问我AT89S51的P0口为什么要接一个上拉电阻.我就用一个篇幅来说一说 P0口和其它三个口的内部电路是不同的,如下图 P0口是接在两个三极管D0和D1之间的,而P1-P3口的上部是接一个电 ...