HDU1083_Courses_课程_C++

给你们人工翻译一下题目哈,刚好练一下英语
对于一个组中有 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++的更多相关文章
- C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》
前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...
- 【书籍下载链接】_1_第一轮_C语言书籍
各位朋友,如果您觉得下载的电子书,看的还可以,请购买纸质版的图书,如果您觉得 您下载的书,不值得一看请在下载后直接删除. Windows汇编:http://dl.vmall.com/c0jk1v970 ...
- 百度Apollo无人驾驶入门课程下载
本文提供 百度Apollo官网的无人驾驶入门课程下载,主要为视频文件. 视频数量:101个:文件格式:MP4:视频总时长:2小时40分钟:文件总大小:约1.13GB: 马上下载 关注公众号罗孚传说(R ...
- 【小尝试】Java获取慕课网原有路径课程列表
作为一个老慕课网(https://www.imooc.com/)粉丝,还记得最开始的慕课网有很多免费的路径课程,练习什么的也特别详细,是入门一门语言的好方法. 现在慕课网发展起来了收费模式,添加了很多 ...
- .NET 提升教育 第一期:VIP 付费课程培训通知!
为响应 @当年在远方 同学的建议,在年前尝试进行一次付费的VIP培训. 培训的课件:点击下载培训周期:10个课程左右,每晚1个半小时培训价格:1000元/人.报名方式:有意向的请加QQ群:路过秋天.N ...
- 14门Linux课程,打通你Linux的任督二脉!
Linux有很多优点:安全.自主.开源--,也正是这些优点使得很多人都在学Linux. 虽说网上有大把的Linux课程资源,但是对很多小白来说网上的课程资源比较零散并不适合新手学习. 正因为此,总结了 ...
- 在线课程笔记—.NET基础
关于学习北京理工大学金旭亮老师在线课程的笔记. 介绍: 在线课程网址:http://mooc.study.163.com/university/BIT#/c 老师个人网站:http://jinxuli ...
- [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 ...
- [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 ...
随机推荐
- php 图片操作类,支持生成缩略图,添加水印,上传缩略图
<?php class Image { //类开始 public $originimage = ""; //源图片文件地址 public $image ...
- 40.VUE学习之--组件之间的数据传参父组件向子组件里传参,props的使用实例操作
父组件向子组件里传参,props的使用实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...
- [BZOJ3631][JLOI2014]松鼠的新家(树链剖分)
[BZOJ3631] 树剖模板题了, Code #include <cstdio> #include <algorithm> #define MID int mid=(l+r) ...
- 笔记-python-standard library-17.7 queue
笔记-python-standard library-17.7 queue 1. queue source code:Lib/queue.py 该模块实现了多生产者,多消费者队列. 此模块实现了所有 ...
- Android Kotlin 连接 http
由于近期网上搜索了很多Android连接到http的方法, 可是2013年以前的方法现在都不能用了,要么报错,要么被遗弃,岁月留下来的东西只能自己整理了. 其实很简单,就一个HttpUtil通用类.可 ...
- Django的Field(字段)
字段 1.models.AutoField 自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=Tr ...
- 用scrapy数据抓取实践
本文来自网易云社区 作者:沈高峰 数据分析中需要用到的不少数据都是需要进行抓取的,并且需要对抓取的数据进行解析之后存入数据库.scrapy是一个强大的爬虫框架,本文简单介绍下使用scrapy进行垂直抓 ...
- CommonTwo
public int commonTwo(String[] a, String[] b) { int startA=0; int startB=0; int count=0; while((( sta ...
- USACO Section1.4 Mother's Milk 解题报告
milk3解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- 查看Linux系统用户登录日志
日志: /var/log/wtmp说明: 此文件是二进制文件,查看方法如下:该日志文件永久记录每个用户登录.注销及系统的启动.停机的事件.因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加 ...