暑假-二分图-C - Courses
来源:互联网 发布:学淘宝美工 编辑:程序博客网 时间:2024/05/18 21:39
题意:有p门课程,n个学生,然后又p行,每行都m个编号,代表课程i【i从课程1到课程p】
被学生j选中【学生j愿意当课程i的课代表】,问能否能没门课程都有一个课代表【每个人只能选
一门课程当课代表。
思路:二分图的最大匹配,匈牙利算法模板。
注意枚举的是课程,是课程选学生,并且判断是否满足所有课程都能选到学生。
而不是枚举学生选课程【刚开始就被这个坑了下】。
#include<iostream>#include<cstring>#include<vector>using namespace std;const int MAXP = 105;const int MAXN = 305;vector<int>map[MAXP];//map[i][j]为1表示学生j选择课程iint vis[MAXN];//学生i已经选过int link[MAXN];//学生i选择课程link[i]int p, n;void init()//初始化{memset(link, -1, sizeof(link));for (int i = 0; i < MAXP; i++){map[i].clear();}}bool find(int x){for (int i = 0; i < map[x].size(); i++)//枚举该课程的所有学生{int u = map[x][i];//u为学生编号if (!vis[u])//该学生没被选中{vis[u] = 1;//标记已选中if (link[u] == -1 || find(link[u])){//如果v没有匹配,或者v已经匹配了,但从cy[v]出发可以找到增广路link[u] = x;//把x匹配给学生ureturn true;}}}return false;}int main(){int t,m,s;cin >> t;while (t--){init();//初始化cin >> p >> n;for (int i = 0; i < p; i++)//课程i{cin >> m;//选择课程i的学生数目for (int j = 0; j < m; j++){cin >> s;//学生编号map[i].push_back(s);}}int ans = 0;for (int i = 0; i < p; i++)//注意枚举的是课程,不是学生!{memset(vis, 0, sizeof(vis));if (find(i))//如果所以课程能选到课代表{ans++;}}if (ans == p)//如果所以课程都能选到课代表{cout << "YES" << endl;}else{cout << "NO" << endl;}}return 0;}
0 0
- 暑假-二分图-C - Courses
- Courses(二分图匹配)
- COURSES(二分图)
- poj 1469 COURSES----二分图
- [toj1050]【二分图匹配】Courses
- POJ2239 Selecting Courses(二分图)
- poj1469 COURSES(二分图)
- Courses HDU1083 -二分图匹配
- HDU1083 Courses(二分图匹配)
- poj1469 COURSES【二分图匹配】
- 【二分图】poj 1469 COURSES
- 2239 Selecting Courses 二分图匹配
- Courses HDU1083(二分图的匹配)
- poj1469--COURSES(二分图最大匹配)
- hdu 1083 Courses (二分图匹配)
- poj 1469 COURSES 二分图匹配初识
- 【图论02】二分图 1003 Courses
- hdu1083 Courses ( 二分图最大匹配)
- 设置导航栏按钮主题
- 【峰回路转】Excel技巧百例 13.数据透视表的排序
- 使用Scrapy建立一个网站抓取器
- Foundation框架中字符串的查找(rangOfString)
- Android Studio App 播放工程内部音乐文件
- 暑假-二分图-C - Courses
- struts应用
- 08-27 GridView(点中后,图片被蒙住<蒙板>)、Toast(点击后显示提示的内容,一会儿自动消失)、Dialog(点击后显示对话框)
- XCode Could not launch "" failed to get the task for process
- Single Number
- 利用fastjson反序列化json为对象和对象数组
- 面试经验分享
- 数组与指针
- 黑马程序员——IO流——IO转换流,打印流,序列化流,properties以及其他流