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

AFSim2.9.0学习笔记 —— 2、AFSim的Wizard软件概述(ArkSIM集成开发环境 (IDE)) AFSim2.9.0学习笔记 —— 2、AFSim的Wizard软件详述(ArkSIM集成开发环境 (IDE)) 阅读详情

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

Courses

Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11353    Accepted Submission(s): 5326


Problem Description
Consider a group of N students and P courses. Each student visits zero, one or more than one courses. Your task is to determine whether it is possible to form a committee of exactly P students that satisfies simultaneously the conditions:

. every student in the committee represents a different course (a student can represent a course if he/she visits that course)

. each course has a representative in the committee

Your program should read sets of data from a text file. The first line of the input file contains the number of the data sets. Each data set is presented in the following format:

P N
Count1 Student1 1 Student1 2 ... Student1 Count1
Count2 Student2 1 Student2 2 ... Student2 Count2
...... 
CountP StudentP 1 StudentP 2 ... StudentP CountP

The first line in each data set contains two positive integers separated by one blank: P (1 <= P <= 100) - the number of courses and N (1 <= N <= 300) - the number of students. The next P lines describe in sequence of the courses . from course 1 to course P, each line describing a course. The description of course i is a line that starts with an integer Count i (0 <= Count i <= N) representing the number of students visiting course i. Next, after a blank, you'll find the Count i students, visiting the course, each two consecutive separated by one blank. Students are numbered with the positive integers from 1 to N.

There are no blank lines between consecutive sets of data. Input data are correct.

The result of the program is on the standard output. For each input data set the program prints on a single line "YES" if it is possible to form a committee and "NO" otherwise. There should not be any leading blanks at the start of the line.

An example of program input and output:
 

 

Sample Input
2
3 3
3 1 2 3
2 1 2
1 1
3 3
2 1 3
2 1 3
1 1
 
Sample Output
YES
NO
 

 

Source
 

题意概括:

给出 P 个课程 N 个学生 ,和选第 i 个课程的学生。询问是否所有课程都能被学生匹配,上每门课的学生都不同。

解题思路:

二分图最大匹配(匈牙利算法),判断最大匹配数是否等于 课程数 P。

 

AC code:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 #define INF 0x3f3f3f3f
 7 #define LL long long
 8 using namespace std;
 9 const int MAXN = 310;
10 const int MAXP = 110;
11 
12 struct Edge
13 {
14     int v, nxt;
15 }edge[MAXP*MAXN];
16 int head[MAXN], cnt;
17 int linker[MAXN];
18 bool used[MAXN];
19 int N, P;
20 
21 void add(int from, int to)
22 {
23     edge[cnt].v = to;
24     edge[cnt].nxt = head[from];
25     head[from] = cnt++;
26 }
27 
28 bool Find(int x)
29 {
30     int v;
31     for(int i = head[x]; i != -1; i = edge[i].nxt){
32         v = edge[i].v;
33         if(used[v]) continue;
34         used[v] = true;
35         if(linker[v] == -1 || Find(linker[v])){
36             linker[v] = x;
37             return true;
38         }
39     }
40     return false;
41 }
42 
43 void init()
44 {
45     memset(head, -1, sizeof(head));
46     memset(linker, -1, sizeof(linker));
47     memset(edge, 0, sizeof(edge));
48     cnt = 0;
49 }
50 
51 int main()
52 {
53     int T_case, bnum, v;
54     scanf("%d", &T_case);
55     while(T_case--){
56         init();
57         scanf("%d%d", &P, &N);
58         for(int i = 1; i <= P; i++){
59             scanf("%d", &bnum);
60             while(bnum--){
61                 scanf("%d", &v);
62                 add(i, v);
63             }
64         }
65         int res = 0;
66         for(int i = 1; i <= P; i++){
67             memset(used, 0, sizeof(used));
68             if(Find(i)) res++;
69         }
70         if(res == P) puts("YES");
71         else puts("NO");
72     }
73     return 0;
74 }

 

Spring Boot 与 Redisson 版本适配深度解析 Spring Boot 与 Redisson 的版本适配是一个动态演进的过程。开发者需要密切关注两者官方的版本更新日志,建立完善的版本验证机制。本文提供的适配方案基于当前最新技术状态(2024年1月),建议在实际生产环境中通过灰度发布策略验证版本兼容性。只有深入理解底层技术原理,才能在分布式系统的星辰大海中稳健航行。延伸阅读Spring Boot 官方迁移指南。 阅读详情

相关推荐

二进制、八进制、十六进制、十进制转换详解

二进制是计算机的语言,正如我们使用汉语表达与交流信息一样,任何信息在计算机中都以二进制的形式存储和计算。了解二进制与十进制等进制之间的转换方法,有助于我们了解计算机内部的数字计算过程,可以帮助我们在一定程度上理解信息在计算机中的编码和解码过程。本文先简单介绍位置化数字系统的概念,然后详细讲解二进制、八进制、十六进制、十进制之间的转换方法与原理。

2301_81674797的博客 2097

二分图匹配

二分图最大匹配匈牙利算法核心思想找到增广路ans+1,至找不到增广 具体参照https://www.byvoid.com/blog/hungary复杂度(以下以邻接链表来说)时间复杂度O(VE)(V表示一侧的点数,E表示二分图的边数) 空间复杂度O(V+E) UOJ#78. 二分图最大匹配模板测试var w:array[0..400000,1..2]of longint; x,y,z:ar

slongle的专栏 544

高斯泼溅(Gaussian Splatting):3D建模的颠覆性革命

高斯泼溅(Gaussian Splatting):3D建模的颠覆性革命

yingtu666的博客 5158

HDU1083——Courses和匈牙利算法的匹配过程

假设我们有两个集合(比如人员集合和任务集合),如果人员和任务之间存在可能的关联(如人员可以执行某个任务)则构建一个二维矩阵来表示这种关系,矩阵元素可以是成本(如果是求最小成本匹配)、关联强度等。从原理上,通过不断调整矩阵中0元素的分布和通过覆盖线条数来判断是否达到最大(或完整)匹配,是基于这样的逻辑:每次调整都在尝试探索新的匹配路径和组合。

u014114223的博客 914

Vue3实战:从零构建ElementPlus后台管理系统全流程

本文详细介绍了从零开始使用Vue3和ElementPlus构建后台管理系统的全流程。内容涵盖环境准备、项目初始化、Vite配置、SCSS样式体系搭建、ElementPlus组件库引入与配置,以及封装可复用的SvgIcon组件进行图标管理,旨在帮助开发者快速搭建现代化、可维护的中后台应用。

weixin_29011239的博客 160

高效网络流量回放:使用tcpreplay实现多目标IP的pcap重放

本文详细介绍了如何使用tcpreplay工具高效回放网络流量pcap文件,并实现多目标IP发送。通过tcprewrite编辑报文和并行回放策略,可满足安全测试、负载测试等场景需求。文章涵盖安装、基础回放、核心技巧及性能优化,帮助读者构建真实流量压力测试环境。

weixin_29297127的博客 481

hdu 二分图最大匹配问题 (hdu 1083)

给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。 最大匹配即最大的匹配个数。 关于二分匹配的基本问题:http://www.cnblogs.com/heat-man/archive/2013/03/26/2982644.html hdu 1083 courses(http://acm.hdu.edu.cn/showproblem....

weixin_30409849的博客 212

深入C++学习还必须掌握的一基础知识精讲

施磊C++语言基础提高课程笔记,包括了new/delete;malloc/free;引用和指针;const,指计和引用的结合;函数重载,inline的数,参数带默认值的函数;函数模板等知识点

GeniusAng的博客 1480

HDU OJ 1083 Courses 【二分图匹配之最大匹配】

原题连接:点击打开链接 题意:有p门的课,每门课都有若干学生,现在要为每个课程分配一名课代表,每个学生只能担任一门课的课代表,如果每个课都能找到课代表,则输出"YES",否则"NO"。 思路:入门的二分图最大匹配问题,求的最大匹配数ans 若 ans = p 则输出 YES,否则 NO。 代码: #include #include #include #include #include

nyist_飘谊 2710

S7-200SMART 的运动控制(一)向导配置具体步骤(图文)

S7-200SMART 的运动控制(一)向导配置具体步骤(图文)

Robot_PLC_HMI_Automation 3851

AI测试实战:手把手教你做LLM(大模型)性能测试「含完整代码」

大模型API性能测试是评估模型服务响应能力、吞吐量和资源效率的关键手段。核心指标包括总响应时间、吐字率、首token延迟、输入/输出tokens数量、QPM等。测试流程涵盖构造负载、并发请求、数据采集和指标计算。优化建议针对吐字率低、首token延迟高、QPM偏低等问题,从模型、硬件、系统等多层面提出解决方案。

blues_C的博客 1431

HDU 1083:Courses

二分图匹配模板题

温姑娘的博客 285

PCL Alpha Shapes平面点云边界特征提取【2026最新版】

alpha shapes算法用于平面点云的边界特征提取。博客长期更新,本文最近一次更新时间为:2026年4月20日。

点云侠的博客 27万+

【代码超详解】HDU 1083 Courses(二分图匹配)

一、题目描述 二、算法分析说明与代码编写指导 匈牙利算法 MD 原来在课程数 P 和 N 之后有 P 行,每行的第一个数分别是 Count 1 到 Count P 我说怎么回事看半天没看出来,原来是写成这个鬼样子……其实就是 P、N 之后一共 P 行,第 i 行开头是一个数 mi,接下来有 mi 个数,代表 m 个去了课程 i 的学生。 三、AC 代码 #include<cstdio&gt...

COFACTOR 351

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU - 1083 Courses(二分图匹配)

HDU - 1083  题意:就是求最大匹配是否是完美匹配。 #include #include #include #include using namespace std; const int maxn = 500,maxe = 3e5; struct node { int to,next; node(){} node(int a,int b){to = a

shinimashzi 250

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HDU 1083 Courses(二分匹配匈牙利算法模板题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1083 Problem Description Consider a group of N students and P courses. Each student visits zero, one or more than one courses. Your task is to de...

2728

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C - Courses HDU - 1083(二分图匹配模板题)

题目链接 解题思路: 以学生为一边,课程为一边,将学生可以选的课程直接相连即可 之后,二分图匹配 AC代码: // C - Courses HDU - 1083.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> using na

trouble_的博客 190

Courses HDU1083(二分图的匹配)

题目http://acm.hdu.edu.cn/showproblem.php?pid=1083 描述:有p门的课,每门课都有若干学生,现在要为每个课程分配一名课代表,每个学生只能担任一门课的课代表,如果每个课都能找到课代表,则输出"YES",否则"NO"。 思想:采用二分图的最大匹配,对课程—学生关系建立一个图,进行二分图的最大匹配,如果最大匹配数==课程数,说明能够满足要求,否则不

deqingguo的专栏 3405

HDU 1083 COURSES 【二分图最大匹配】

Description Consider a group of N students and P courses. Each student visits zero, one or more than one courses. Your task is to determine whether it is possible to form a committee of exactly P s

Kelisiya 367

HDU1083 Courses —— 二分图最大匹配

题目链接:https://vjudge.net/problem/HDU-1083 Courses Time Limit: 20000/10000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8869Accepted Submission(s): 431...

alince20008的博客 149

HDU - 1083 : Courses(匈牙利算法,二分图最大匹配)

题目链接:HDU - 1083 : Courses 题目大意:有P门课程,N个学生,每门课程有若干个学生选,且每门课都要有一个课代表,但是每个学生至多只能担任一门课的课代表,问能否每门课都能找到课代表 解题分析:将课程和学生看成二分图的左右两部分,由是否选课确定中间的连边,接下来就是裸套匈牙利算法模板了,如果最大匹配数=课程数,则输出”YES”,否则输出”NO”

Jerry的博客 502

HDU 1083 Courses (二分图匹配)

题意:p门课,n个学生,每门课都有一些学生感兴趣,求是否能使课和学生形成完美匹配。 题解:二分图匹配 用匈牙利算法就可以过。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<queue> #include<stack&

gongyuandaye的博客 212

hdu1083:Courses(二分图最大匹配)

http://acm.hdu.edu.cn/showproblem.php?pid=1083 Problem Description Consider a group of N students and P courses. Each student visits zero, one or more than one courses. Your task is to determine whe...

315

【HDU 1083】Courses(匈牙利算法)

题意描述:有p门课程,n个学生,每门课程可能有不止一名学生选,每个学生在一个committee代表一门课程,求学生和课程的最大匹配,若最大匹配等于p,输出YES,否则输出NO。 解题思路:入门级的二分图匹配问题,对课程—学生关系建立一个图,进行二分图的最大匹配,看最大匹配数是否等于课程数即可,使用模板即可。 错误分析:要注意输入的序号。 Consider a group of N students and P courses. Each student visits zero, one o..

zz_xun的博客 240

hdu 1083 Courses(二分图匹配)

Problem Description Consider a group of N students and P courses. Each student visits zero, one or more than one courses. Your task is to determine whether it is possible to form a committee of exa

坏坏的薯片 350

HDU Courses 二分图最大匹配

题意:P门课程,N个学生。要求,每门课程都要有一个学生代表,而且一个学生不能做两节课的代表。思路:课程为二分图X部,学生为二分图Y部,如果最大匹配=P,输出YES,否则,输出NO。读错了题目,WA了N次。 http://acm.hdu.edu.cn/showproblem.php?pid=1083 /*********************************************

NM的专栏 441
上一篇: POJ 3565 Ants 【最小权值匹配应用】
下一篇: POJ 3461 Oulipo 【KMP统计子串数】
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值