poj 2239 Selecting Courses (二分匹配)
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 8316 | Accepted: 3687 |
Description
There are 12 classes every day, and 7 days every week. There are hundreds of courses in the college, and teaching a course needs one class each week. To give students more convenience, though teaching a course needs only one class, a course will be taught several times in a week. For example, a course may be taught both at the 7-th class on Tuesday and 12-th class on Wednesday, you should assume that there is no difference between the two classes, and that students can select any class to go. At the different weeks, a student can even go to different class as his wish. Because there are so many courses in the college, selecting courses is not an easy job for Li Ming. As his good friends, can you help him?
Input
Output
Sample Input
5
1 1 1
2 1 1 2 2
1 2 2
2 3 2 3 3
1 3 3
Sample Output
4
Source
//224K 32MS C++ 1154B 2014-06-08 09:36:09
//构图思想很重要..
#include<iostream>
#include<vector>
#define N 105
using namespace std;
int p[N];
vector<int>V[*N];
int match[N];
int vis[N];
int n;
int dfs(int u)
{
for(int i=;i<V[u].size();i++){
int v=V[u][i];
if(!vis[v]){
vis[v]=;
if(match[v]==- || dfs(match[v])){
match[v]=u;
return ;
}
}
}
return ;
}
int hungary()
{
int ret=;
memset(match,-,sizeof(match));
for(int i=;i<n;i++){
memset(vis,,sizeof(vis));
ret+=dfs(i);
}
return ret;
}
int main(void)
{
int m,a,b;
while(scanf("%d",&n)!=EOF)
{
memset(p,,sizeof(p));
for(int i=;i<=n;i++) V[i].clear();
memset(p,,sizeof(p));
int pos=;
for(int i=;i<n;i++){
scanf("%d",&m);
for(int j=;j<m;j++){
scanf("%d%d",&a,&b);
if(!p[(a-)*+b])
p[(a-)*+b]=++pos;
V[i].push_back(p[(a-)*+b]);
}
}
printf("%d\n",hungary());
}
return ;
}
最新文章
- leetcode : Binary Tree Paths
- [C#基础知识] ReadOnly关键字修饰的变量可以修改,只是不能重新分配
- Freemarker日期格式化处理
- 帝国备份王(Empirebak) \class\functions.php、\class\combakfun.php GETSHELL vul
- vue-cli#2.0 webpack 配置分析
- maven项目使用mybatis-generator自动生成代码
- How Big Is A Petabyte, Exabyte, Zettabyte, Or A Yottabyte?
- JS 中document.URL 和 window.location.href 的区别
- busybox filesystem add ldd function
- [置顶] html学习笔记,锚点,超链接,table布局,表头,h,sub,blockquote,ul,li,ol.dl,加入收藏,打印,弹出窗口
- 设置表格边框css样式
- Keli Linux与网络安全(2)——初探Keli
- Codeforces Round #346 (Div. 2) B Qualifying Contest
- jst通用删除数组中重复的值和删除字符串中重复的字符
- MySQL学习笔记(二)
- Visual Studio Code 调整字体大小
- C++中重载、覆盖与隐藏的区别(转)
- Flask插件wtforms、Flask文件上传和Echarts柱状图
- #Plugin 数字滚动累加动画插件
- hdfs mapreduce hbase