给你们人工翻译一下题目哈,刚好练一下英语

  对于一个组中有 N 个学生和 P 种课程。每个学生能够参加0种,1种或者更多的课程。你的任务是找到一种可能的方案使恰好P个学生同时满足下列条件:

    ‧ 方案中的每一个学生选择的是不同的课程(前提是那个学生能够参加该课程)

    ‧ 方案中每个课程都被参加了

  你的程序应该从读入多组测试数据。第一行文件内容是数据的组数。每一组数据后接下列形式:

    P    N

    数量1  学生1 2  学生1 2  ……  学生1 数量1

    数量2  学生2 2  学生2 2  ……  学生2 数量2

    ……

    数量p  学生p 2  学生p 2  ……  学生p 数量p

  每组数据中第一行两个整数由空格隔开:P(1≤P≤100)-课程数 和 N(1≤N≤300)-学生数。接下来P行用一个数列来描述每个课程。从课程1到课程P,每行用来描述该课程。每行课程开头的一个整数 i (0≤数量 i ≤N)是学生能够参加该课程的数量。接下来,一个空格之后,你将会得到 i 个学生能参加该课程,每两个连续的数由一个空格隔开。学生的编号是从1到N的整数。

  在连续的两组数据间没有空行。输入的数据保证正确。

  程序的结果是标准的输出。对于每一组数据如果有可能的方案打印单个的一行 “YES” 否则打印 “NO”。在每行之前不需要任何的空格。

  一份程序的输入和输出样列:

    样列输入:

    2
    3 3
    3 1 2 3
    2 1 2
    1 1
    3 3
    2 1 3
    2 1 3
    1 1
    样列输出:

    YES

    NO

  唔!翻译一道题累死人,比A它还慢,以后怎么打比赛啊……

  我们来分析一下问题,其实就是P个课程和N个学生进行二分图匹配,可以有学生不上课,但是每个课程有且只有一个学生上

  直接匈牙利算法(准备写这个算法,但是还没有码,贴个链接他写得蛮好的一看就懂,等我码完了再来换链接)

    http://blog.csdn.net/dark_scope/article/details/8880547

  下面是代码

 #include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; const int N=;
int link[N],n,m;
bool g[N][N],f[N];
bool dfs(int x)
{
int i;
for (i=;i<=m;i++)
if (f[i]&&g[x][i])
{
f[i]=;
if (!link[i]||dfs(link[i]))
{
link[i]=x;
return ;
}
}
return ;
}
int main()
{
int t,i,j,x;
scanf("%d",&t);
while (t>)
{
t--;
scanf("%d%d",&n,&m);
for (i=;i<=m;i++)
{
link[i]=;
for (j=;j<=n;j++) g[j][i]=;
}
for (i=;i<=n;i++)
{
scanf("%d",&j);
while (j>)
{
j--;
scanf("%d",&x);
g[i][x]=;
}
}
for (i=;i<=n;i++)
{
for (j=;j<=m;j++) f[j]=;
if (!dfs(i)) break;
}
if (i>n) printf("YES\n");
else printf("NO\n");
}
return ;
}

版权所有,转载请联系作者,违者必究

QQ:740929894

HDU1083_Courses_课程_C++的更多相关文章

  1. C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》

    前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...

  2. 【书籍下载链接】_1_第一轮_C语言书籍

    各位朋友,如果您觉得下载的电子书,看的还可以,请购买纸质版的图书,如果您觉得 您下载的书,不值得一看请在下载后直接删除. Windows汇编:http://dl.vmall.com/c0jk1v970 ...

  3. 百度Apollo无人驾驶入门课程下载

    本文提供 百度Apollo官网的无人驾驶入门课程下载,主要为视频文件. 视频数量:101个:文件格式:MP4:视频总时长:2小时40分钟:文件总大小:约1.13GB: 马上下载 关注公众号罗孚传说(R ...

  4. 【小尝试】Java获取慕课网原有路径课程列表

    作为一个老慕课网(https://www.imooc.com/)粉丝,还记得最开始的慕课网有很多免费的路径课程,练习什么的也特别详细,是入门一门语言的好方法. 现在慕课网发展起来了收费模式,添加了很多 ...

  5. .NET 提升教育 第一期:VIP 付费课程培训通知!

    为响应 @当年在远方 同学的建议,在年前尝试进行一次付费的VIP培训. 培训的课件:点击下载培训周期:10个课程左右,每晚1个半小时培训价格:1000元/人.报名方式:有意向的请加QQ群:路过秋天.N ...

  6. 14门Linux课程,打通你Linux的任督二脉!

    Linux有很多优点:安全.自主.开源--,也正是这些优点使得很多人都在学Linux. 虽说网上有大把的Linux课程资源,但是对很多小白来说网上的课程资源比较零散并不适合新手学习. 正因为此,总结了 ...

  7. 在线课程笔记—.NET基础

    关于学习北京理工大学金旭亮老师在线课程的笔记. 介绍: 在线课程网址:http://mooc.study.163.com/university/BIT#/c 老师个人网站:http://jinxuli ...

  8. [LeetCode] Course Schedule II 课程清单之二

    There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...

  9. [LeetCode] Course Schedule 课程清单

    There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...

随机推荐

  1. photoshop入门笔记2:PS箭头的制作

    ---恢复内容开始--- 1.     首先打开ps软件,在ps里新建一个画布这里就500*500,可以随意. 2.然后在ps软件界面上的工具栏里找到‘直线工具’,如图. 3.选择好工具之后,在ps软 ...

  2. 批量上传图片(jQuery-File-Upload使用)

    jQuery-File-Upload jQuery-File-Upload是一个jquery下的ajax文件上传插件,支持批量上传,github地址:https://github.com/blueim ...

  3. [转]ANDROID JNI之JAVA域与c域的互操作

    本文讲述AndroidJava域与C域互操作:Java域调用c域的函数:c域访问Java域的属性和方法:c域生成的对象的保存与使用.重点讲解c域如何访问Java域. 虽然AndroidJNI实现中,c ...

  4. Grub Rescue修复方法[repost]

    From : http://www.2cto.com/os/201111/112327.html 症状:开机显示:GRUB loading error:unknow filesystem grub r ...

  5. 剑指Offer - 九度1520 - 树的子结构

    剑指Offer - 九度1520 - 树的子结构2013-11-30 22:17 题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每 ...

  6. 《Cracking the Coding Interview》——第6章:智力题——题目2

    2014-03-19 06:57 题目:对于8x8的棋盘,如果拿掉对角位置的两个小块儿,能否用1x2的多米诺牌拼成剩下的棋盘? 解法:不可能.且不说8x8,NxN都是不可能的.如果N是奇数,NxN-2 ...

  7. USACO Section1.2 Palindromic Squares 解题报告

    palsquare解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...

  8. linux统计分析流量-wireshark

    wireshark是一款带界面的开源抓包工具,可以用来对系统流量进行统计分析. 安装 由于wireshark是带界面的,所以一般在界面环境下运行,可以通过yum安装: $ yum install -y ...

  9. 玩转Linux之内存管理-free

    玩转Linux之内存管理-free free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之 ...

  10. Hastable和Dictionary以及ArrayList和(List,LinkedList,数组)的区别

    Hastable和Dictionary的区别:(键值对) 1:单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分. 2:多线程程序中推荐使用 Hashtabl ...