http://acm.hdu.edu.cn/showproblem.php?pid=1083

题意:
有p门课和n个学生,每个学生都选了若干门课,每门课都要找一个同学来表演,且一个同学只能表演一门课,判断是否能行。

思路:
二分图匹配的模板题。

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; int p, n;
int G[][];
int vis[];
int match[]; //第i学生的选课 int dfs(int x)
{
for (int i = ; i <= n; i++)
{
if (G[x][i] && !vis[i])
{
vis[i] = ; //标记,为了为了后面改课时跳过这门课
if (!match[i] || dfs(match[i])) //如果该学生还没有确定课或者这门课换一个学生
{
match[i] = x;
return ;
}
}
}
return ;
} int main()
{
//freopen("D:\\txt.txt", "r", stdin);
int T;
int a;
cin >> T;
while (T--)
{
memset(match, , sizeof(match));
memset(G, , sizeof(G));
cin >> p >> n;
int num;
for (int i = ; i <= p; i++)
{
cin >> num;
while (num--)
{
cin >> a;
G[i][a] = ;
}
}
//为每门课匹配学生
int i;
for (i = ; i <= p; i++)
{
memset(vis, , sizeof(vis));
if (!dfs(i)) break;
}
if (i == p + ) cout << "YES" << endl;
else cout << "NO" << endl;
}
}

HDU 1083 Courses(二分图匹配模板)的更多相关文章

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

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

  2. Courses HDU - 1083 (二分匹配模板题)

    Consider a group of N students and P courses. Each student visits zero, one or more than one courses ...

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

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

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

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

  5. hdu - 1083 - Courses

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

  6. HDU - 1083 Courses /POJ - 1469

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1083 http://poj.org/problem?id=1469 题意:给你P个课程,并且给出每个课 ...

  7. hdu 1083 Courses (最大匹配)

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

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

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

  9. HDU - 1054 Strategic Game (二分图匹配模板题)

    二分图匹配模板题 #include <bits/stdc++.h> #define FOPI freopen("in.txt", "r", stdi ...

随机推荐

  1. android studio 自定义控件

    第一种方式: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...

  2. PNG格式图片常见转换方法

    前言 最近碰到一个需要将图片由原始的PNG转化为JPG的需求,由于PNG图片本身质量等原因,导致转化为JPG之后,存在失真的问题,后来一个同事分享了下述的HighQualityPNGToJPG方法解决 ...

  3. nltk模块基础操作

     几个基础函数 (1)搜索文本:text.concordance(word) 例如,在text1中搜索词”is”在文本中出现的次数以及上下文的词:text1.concordance("is& ...

  4. iOS UI基础-4.1应用程序管理 字典转Model

    用模型取代字典 使用字典的坏处 一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编辑器没有智能提示,需要手敲 dict[@"name"] = @&qu ...

  5. Base64编码加密

    package liferay; public class Base64 { public static final char EQUAL = '='; public static final cha ...

  6. npm包上传下载的命令及例子

    npm包上传下载的命令及例子. 新建hello.js 执行:npm init 执行:npm adduser ( username:XXX password:XXX email:XXX ) 上传:npm ...

  7. JVM内存模型:程序计数器

    一.JVM模型概述 java虚拟机(JVM)在java程序运行的过程中,会将它所管理的内存划分为若干个不同的数据区域,这些区域有的随着JVM的启动而创建,有的随着用户线程的启动和结束而建立和销毁.一个 ...

  8. ADO.NET知识学习总结

      1. 概述 使用的命名空间: System.Data.SqlClient 连接字符串    服务器/数据库实例+数据库名称+安全信息+用户名+密码  可参考http://www.connectio ...

  9. ActiveMQ 集群负载平衡

    目前的架构: 负载均衡方案:========================================= 第二种方案呢,假设我们整个应用是个食堂,这个食堂里面有好多饭口,每个饭口有好多大爷大妈( ...

  10. python 循环队列的实现

    最近在做一个东西的时候发现需要用到循环队列,实现先进先出(FIFO),不断往里面添加数据,当达到某个限定值时,最先进去的出去,然后再添加.之后需要对队列里面的内容进行一个筛选,作其他处理.首先我想到了 ...