Courses

Courses Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Submit Status Practice HDU 1083

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

题意:学生可以自由选择上什么课,上多少种课,每个学生可以代表一门课,问最后是否有的课没有找到学生可以代表。当然一个学生只能代表一门课。

明显匈牙利算法

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4
 5 using namespace std;
 6
 7 #define N 330
 8
 9 int p, n, vis[N], used[N], maps[N][N];
10
11
12 void init()
13 {
14     memset(vis, 0, sizeof(vis));
15     memset(used, 0, sizeof(used));
16     memset(maps, 0, sizeof(maps));
17 }
18
19 int found(int u)
20 {
21     for(int i = 1; i <= n; i++)
22     {
23         if(maps[u][i] && !vis[i])  // 这个学生愿意上这么课,
24         {
25             vis[i] = 1;
26             if(!used[i] || found(used[i]))   // 并且这个学生没有代表其他课,或者它代表的课有其他人代表,那么这个人就可以代表这门课
27             {
28                 used[i] = u;
29                 return true;
30             }
31         }
32     }
33     return false;
34 }
35
36 int main()
37 {
38     int t, q, x;
39
40     scanf("%d", &t);
41
42     while(t--)
43     {
44         init();
45
46         scanf("%d%d", &p, &n);
47
48         for(int i = 1; i <= p; i++)
49         {
50             scanf("%d", &q);
51             while(q--)
52             {
53                 scanf("%d", &x);
54                 //used[x] = i;
55                 maps[i][x] = 1;   // i 这门课被x学生代表
56             }
57         }
58
59         int flag = 0;
60
61         for(int i = 1; i <= p; i++)
62         {
63             memset(vis, 0, sizeof(vis));
64
65             if(!found(i))  // 如果这门课找不到学生代表,flag=1,break;只要有一门课找不到别人代表,就printf  “NO
66             {
67                 flag = 1;
68                 break;
69             }
70         }
71         if(flag)
72             printf("NO\n");
73         else
74             puts("YES");
75     }
76     return 0;
77 }
时间: 2024-10-11 21:15:49

Courses的相关文章

Poj 2239 Selecting Courses 【二分匹配】

Selecting Courses Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9007 Accepted: 4010 Description It is well known that it is not easy to select courses in the college, for there is usually conflict among the time of the courses. Li Ming i

HDU 3697 Selecting courses 选课(AC代码)贪心

题意:一个学生要选课,给出一系列课程的可选时间(按分钟计),在同一时刻只能选一门课程(精确的),每隔5分钟才能选一次课,也就是说,从你第一次开始选课起,每过5分钟,要么选课,要么不选,不能隔6分钟再选.在给出的课程的事件Ai~Bi内,Bi起的那分钟是不能够选的了,就是说截止到(Bi-1)分钟59秒还能选,Bi就不能选了. 思路:由于n最大才300,那就可以使用暴力解法.开始时刻可以从0~4分钟这5个时刻开始,因为每5分钟是个周期,比如0分没选,而5分才选了,这和从5分才开始选是一样的.每隔5分钟

POJ1469 COURSES 【二分图最大匹配&#183;HK算法】

COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17777   Accepted: 7007 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 poss

poj 1469 COURSES 解题报告

题目链接:http://poj.org/problem?id=1469 题目意思:略 for 循环中遍历的对象要特别注意,究竟是遍历课程数P 还是 学生数N,不要搞混! 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 const int maxn = 300 + 5; 7 int match[maxn], map[maxn][maxn];

Windows Kernel Security Training Courses

http://www.codemachine.com/courses.html#kerdbg Windows Kernel Internals for Security Researchers This course takes a deep dive into the internals of the Windows kernel from a security perspective. Attendees learn about behind the scenes working of va

poj 1469 COURSES (二分匹配)

COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16877   Accepted: 6627 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 poss

POJ 1469 COURSES(二部图匹配)

COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21527   Accepted: 8460 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 poss

Doing well in your courses ---- a guide by Andrej Karpathy

Doing well in your courses a guide by Andrej Karpathy Here is some advice I would give to younger students if they wish to do well in their undergraduate courses. Having been tested for many years of my life (with pretty good results), here are some

POJ 1469 COURSES

COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21382   Accepted: 8408 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 poss

Courses(最大匹配)

Courses Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5214    Accepted Submission(s): 2502 Problem Description Consider a group of N students and P courses. Each student visits zero, one or