题目大意:

一共有N个学生跟P门课程,一个学生可以任意选一 门或多门课,问是否达成: 
  1.每个学生选的都是不同的课(即不能有两个学生选同一门课)
  2.每门课都有一个代表(即P门课都被成功选过)
输入为:
第一行一个T代表T组数据
P N(P课程数, N学生数)
接着P行:
第几行代表第几门课程,首先是一个数字k代表对这门课程感兴趣的同学的个数,接下来是k个对这门课程感兴趣同学的编号。
输出为:
若能满足上面两个要求这输出”YES”,否则为”NO”
注意:是课程匹配的学生,学生没课上没事.....

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
#define maxn 505
bool G[maxn][maxn];///图存储
bool vis[maxn];///标记点是否被遍历过
int P[maxn];///表示第i个学生选的是第P[i]门课程
int n, m;///n门课程 m个学生 bool Find(int u)
{
for(int i=; i<=m; i++)
{
if(G[u][i] && !vis[i])///判断第i个学生是否喜欢第U门课, 并且判断第i个学生是否被遍历过
{
vis[i] = true;///标记第i个学生被遍历过了
if( !P[i] || Find(P[i]) )/**判断第i个学生是否选过课了,如果选过了就看看能否更改这个学生所选的课程,让这个学生选u这门课*/
{///如果u这门课 i是可以选的,退出函数完成筛选,否则继续为u进行挑选学生,直到没有
P[i] = u;
return true;
}
}
}
return false;
} int main()
{
int T, v, j, i, k;
scanf("%d", &T); while(T--)
{
memset(G, false, sizeof(G));
memset(P, , sizeof(P));
scanf("%d %d",&n, &m); for(i=; i<=n; i++)
{
scanf("%d", &k);
while(k --)
{
scanf("%d", &v);
G[i][v] = true;
} } for(j=; j<=n; j++)
{/**我们每一次进行搜索的时候所有的点都要置为未遍历,因为我们每一次选课都要重新分配课程*/
memset(vis, false, sizeof(vis));
/**判断 j 课程是否找到了自己的学生**/
if( !Find(j) )
break;
} if( j == n + )
puts("YES");
else
puts("NO");
}
return ;
}

HDU 1083 Courses(最大匹配模版题)的更多相关文章

  1. hdu 1083 Courses (最大匹配)

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

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

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

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

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

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

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

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

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

  6. hdu - 1083 - Courses

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

  7. HDU - 1083 Courses /POJ - 1469

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

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

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

  9. CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题

    题意:求二分图的最大匹配数量 模版如下: //二分图匹配(匈牙利算法的DFS实现) //初始化:g[][]两边顶点的划分情况 //建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹 ...

随机推荐

  1. [Angular 2] Create a simple search Pipe

    This lesson shows you how to create a component and pass its properties as it updates into a Pipe to ...

  2. Java面试求职之==与equals()差别

    Java中equals和==的差别 java中的数据类型,可分为两类:     1.基本数据类型(也称原始数据类型):byte,short,char,int,long,float,double,boo ...

  3. Undefined symbols for architecture i386

    这个错误的发生原因一般是“XXX”这个文件(类库)虽然引入了工程中,但是由于种种原因(常见于多人开发,svn同步不规范)导致“XXX”并未被添加到project.pbxproj这个文件中. 解决方法是 ...

  4. Java基础知识强化之集合框架笔记03:Collection集合的功能概述

    1. Collection功能概述:Collection是集合的顶层接口,它子体系有重复的,有唯一性,有有序的,无序的. (1)添加功能 boolean add(Object obj):添加一个元素 ...

  5. Linux 下Mysql自动备份脚本

    backdb.sh 文件 #!/bin/bash USER="root" PASSWORD="888888" DATABASE="mydb" ...

  6. Python之路,Day23-----暂无正在更新中

    Python之路,Day23-----暂无正在更新中

  7. Alibaba FastJson

    import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject class Test { static main(arg ...

  8. android - 调试

    在android总调试程序,不同于普通的java程序,我们可以通过'Windows->Show View->Other->LogCat"打开'LogCat'工具,选择下拉选 ...

  9. ANSI escape code

    最近在做iOS上的SSH终端项目,主要是在手机上远程连接Unix系统,并进行一些简单的指令操作,类似于SecureCRT:今天想总结一下这个项目中遇到的新东西----ANSI escape code. ...

  10. idea 多模块项目依赖父工程class找不到问题

    比如,我们有这么个过程,项目结构如下: a --b --c a是总结点,b是子节点,c是父节点 b依赖父节点class,通过maven构建时通常我们会在子节点中添加父节点依赖,如: <depen ...