题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1083

http://poj.org/problem?id=1469

题意:给你P个课程,并且给出每个课程的学生,求出学生与课程的最大匹配数目,问结果是否与课程数目相同,相同输出YES,否则NO

分析:匈牙利算法

1.每个学生选的都是不同的课(即不能有两个学生选同一门课)

2.每门课都有一个代表(即P门课都被成功选过)

求解二部图的最大匹配。只要匹配可以盖住每门课程,即匹配数与课程数量相等,委员会就可以组成。

Sample Input

Sample Output
YES
NO

AC代码:

 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<queue>
#include<algorithm>
#include<cmath>
#include<iostream> using namespace std;
typedef long long LL; #define INF 0x3f3f3f3f
#define N 420
#define MAXN 100000000
#define mod 1000000007 int maps[N][N],n,p,v[N],vis[N];///vis[i]表示y集合中的点是否匹配; int Hungary(int s)
{
int i;
for(i=;i<=p;i++)
if(v[i]==&&maps[s][i]==)
{
v[i]=;
if(vis[i]==||Hungary(vis[i])==)
{
vis[i]=s;
return ;
}
}
return ;
} int main()
{
int T,m,i,j,x; scanf("%d", &T); while(T--)
{
memset(vis,,sizeof(vis));
memset(maps,,sizeof(maps)); scanf("%d %d", &p,&n); for(i=;i<=p;i++)
{
scanf("%d",&m); for(j=;j<=m;j++)
{
scanf("%d", &x);
maps[x][i]=;
}
}
int ans=;
for(i=;i<=n;i++)///
{
memset(v,,sizeof(v));
if(Hungary(i))
ans++;
}
if(ans==p)
printf("YES\n");
else
printf("NO\n");
}
return ;
}

HDU - 1083 Courses /POJ - 1469的更多相关文章

  1. HDU 1083 Courses 【二分图完备匹配】

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1083 Courses Time Limit: 20000/10000 MS (Java/Others)  ...

  2. HDU 1083 - Courses - [匈牙利算法模板题]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1083 Time Limit: 20000/10000 MS (Java/Others) M ...

  3. hdu - 1083 - Courses

    题意:有P门课程,N个学生,每门课程有一些学生选读,每个学生选读一些课程,问能否选出P个学生组成一个委员会,使得每个学生代言一门课程(他必需选读其代言的课程),每门课程都被一个学生代言(1 <= ...

  4. HDU 1083 Courses(二分图匹配模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1083 题意:有p门课和n个学生,每个学生都选了若干门课,每门课都要找一个同学来表演,且一个同学只能表演一门课,判 ...

  5. hdu 1083 Courses (最大匹配)

    CoursesTime Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  6. COURSES(poj 1469)

    题意: 给你p门课程和n个学生,一个学生可以选0门,1门,或者多门课程,现在要求一个由p个学生组成的集合,满足下列2个条件: 1.每个学生选择一个不同的课程 2.每个课程都有不同的代表 如果满足,就输 ...

  7. HDU 1083 Courses(最大匹配模版题)

    题目大意: 一共有N个学生跟P门课程,一个学生可以任意选一 门或多门课,问是否达成:    1.每个学生选的都是不同的课(即不能有两个学生选同一门课)   2.每门课都有一个代表(即P门课都被成功选过 ...

  8. hdu 1083 Courses(二分图最大匹配)

    题意: P门课,N个学生.     (1<=P<=100    1<=N<=300) 每门课有若干个学生可以成为这门课的代表(即候选人). 又规定每个学生最多只能成为一门课的代 ...

  9. POJ 1274 The Perfect Stall || POJ 1469 COURSES(zoj 1140)二分图匹配

    两题二分图匹配的题: 1.一个农民有n头牛和m个畜栏,对于每个畜栏,每头牛有不同喜好,有的想去,有的不想,对于给定的喜好表,你需要求出最大可以满足多少头牛的需求. 2.给你学生数和课程数,以及学生上的 ...

随机推荐

  1. 移动端touch事件获取clientX, clientY

    目有个交互需要实现手指滑动的交互,pc端使用mousedown,mousemove,mouseup监听实现. 但在ios设备上mousemove是不好监听的,同类的方法是touchstart,touc ...

  2. jquery的隐藏

    HTML 代码:<form> <input type="text" name="email" /> <input type=&qu ...

  3. 项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】

    在上一篇项目管理实践教程二.源代码控制[Source Control Using VisualSVN Server and TortoiseSVN]中我们已经讲解了如何使用TortoiseSVN和Vi ...

  4. EditText光标居上

    <EditText android:id="@+id/shareContent_editText" android:layout_width="wrap_conte ...

  5. C语言_数字排列顺序

    #include <stdio.h> #include <stdlib.h> #define LENGTH 8 void main() { , , , , , , , }; ; ...

  6. thinkphp的model模型的设计经验总结

    关于模型:跟上篇文章thinkphp的目录结构设计经验总结写控制器一个道理:为了尽量避免改动到框架: 首先我们是要有一个BaseModel.class.php作为我们的基础model: 我会在Base ...

  7. Broken Keyboard(悲剧文本)

    你有一个键盘,键盘上所有的键都能正常使用,只是Home键和End键有时会自动按下.你并不知道这一情况,而是专心地打稿子,甚至连显示器都没开电源.当你打开显示器之后,展现在你面前的是一段悲剧文本.你的任 ...

  8. openwrt下加载snmp模块

    加snmp模块到openwrt中去 1.下载snmp的解压包文件 net-snmp-5.4.2.1.tar.gz 下载地址为:http://www.net-snmp.org/download.html ...

  9. .NET面试题目一

    简单介绍下ADO.NET和ADO主要有什么改进? 答:ADO以Recordset存储,而ADO.NET则以DataSet表示,ADO.NET提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据 ...

  10. bower 教程

    1.运行 - cmd 2.npm install -g  bower 3.文件夹右击git bash here