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 ...
随机推荐
- 多线程之ReadWriteLock模拟缓存(九)
错误案例1: package com.net.thread.lock; import java.util.HashMap; import java.util.Map; import java.util ...
- PHP.35-TP框架商城应用实例-后台11-商品分类-删除分类(2种方法)、添加、修改
删除分类 删除一个分类的同时,其所有子分类都删除 在控制器CategoryCtroller.class.php中添加删除函数(delete) 在分类模型中添加钩子函数_before_delete()[ ...
- 【转帖】置高并发jdbc连接池
简单的MySQL连接池 <Resource type="javax.sql.DataSource" name="jdbc/TestDB" factory= ...
- 13 KNN背景分割器
传统的前景背景分割方法有GrabCut,分水岭算法,当然也包括一些阈值分割的算法.但是这些算法在应用中往往显得鲁棒性较弱,达不到一个好的分割效果. 现代的背景分割算法融入了机器学习的一些方法来提高分类 ...
- RSA前端加密解密
技术交流群: 233513714 <html> <head> <title>JavaScript RSA Encryption</title> < ...
- 获取ubuntu中软件包的有用地址
http://us.archive.ubuntu.com/ubuntu/pool/main/g/gettext/
- 《Cracking the Coding Interview》——第3章:栈和队列——题目1
2014-03-18 03:19 题目:用一个数组实现3个栈. 解法: 首先我想过让三个栈动态决定长度.要么左右各一个向中间靠拢,要么三个穿插着,后来都觉得实现起来太复杂,而且思路总有各种功能缺陷,会 ...
- python学习总结---文件操作
# 文件操作 ### 目录管理(os) - 示例 ```python # 执行系统命令 # 清屏 # os.system('cls') # 调出计算器 # os.system('calc') # 查看 ...
- leetcode 149. 直线上最多的点数 解题报告
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +------- ...
- Day3 UI:7种常用控件、4种基本布局
Android常用控件 TextView <TextView android:id="@+id/text_view" android:layout_width="m ...