博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电1083--Courses(二分图匹配)
阅读量:6416 次
发布时间:2019-06-23

本文共 3264 字,大约阅读时间需要 10 分钟。

Courses

Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 5040    Accepted Submission(s): 2430

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
 

 

Recommend
We have carefully selected several similar problems for you:            
求最小、点覆盖数(最大匹配值)是否等于集合元素值;
1 #include 
2 #include
3 #include
4 using namespace std; 5 int map[350][350], dis[350], vis[350]; 6 int n, u; 7 bool Search(int a){ 8 for(int i = 1; i <= u; i++){ 9 if(map[a][i] && !vis[i]){10 vis[i] = 1;11 if(!dis[i] || Search(dis[i])){12 dis[i] = a;13 return true; 14 } 15 }16 }17 return false; 18 }19 int main(){20 int t;21 scanf("%d", &t);22 while(t--){23 scanf("%d %d", &n, &u);24 memset(map, 0, sizeof(map));25 memset(dis, 0, sizeof(dis));26 for(int i = 1; i <= n; i++){27 int a, b;28 scanf("%d", &a); 29 for(int j = 1; j <= a; j++){30 scanf("%d", &b);31 map[i][b] = 1;32 }33 }34 int cnt = 0;35 for(int i = 1; i <= n; i++){36 memset(vis, 0, sizeof(vis));37 if(Search(i))38 cnt++;39 }40 printf(cnt==n?"YES\n":"NO\n");41 }42 return 0; 43 }

 

转载于:https://www.cnblogs.com/soTired/p/4743500.html

你可能感兴趣的文章
REST framework
查看>>
awk中begin/end的含义
查看>>
windows下流媒体nginx-rmtp-module服务器搭建及java程序调用fmpeg将rtsp转rtmp直播流【转】...
查看>>
vlc的应用之三:动态调用vlc-0.9.4的libvlc.dll【转】
查看>>
Web API核查表:设计、测试、发布API时需思考的43件事[转]
查看>>
Eclipse使用技巧
查看>>
webkit webApp 开发技术要点总结
查看>>
MVC下用户登录状态校验的问题以及解决方案--------------Action全局过滤器的使用...
查看>>
java的类加载机制
查看>>
闪电侠 Netty 小册里的骚操作
查看>>
c# dump 程序崩溃 windbg
查看>>
Docker GitHub 网站中 Readme.md 以技术者的角度翻译
查看>>
移动开发阻止默认事件,1默认长按复制2拖动时页面默认移动
查看>>
todo
查看>>
关于BufferedInputStream和BufferedOutputStream的实现原理的理解
查看>>
啊蛋的杂货铺即将上线
查看>>
GIT相关文档
查看>>
Mybatis用注解方式来操作mysql数据库
查看>>
[Jquery] js获取浏览器滚动条距离顶端的距离
查看>>
使用border做三角形
查看>>