hdu1083 Courses--最大匹配 & HK算法
来源:互联网 发布:最新定位软件 编辑:程序博客网 时间:2024/06/06 16:59
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1083
题意:p个课程,n个学生,每门课程都有若干个学生,问是否可以让每门课程都有课代表,可以输出YES。
直接用HK算法就可以,当然这题有点水,用匈牙利也可以。
#define _CRT_SECURE_NO_DEPRECATE #include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<queue>#define INF 99999999;using namespace std;int t;int dis;int p, n;int a[105][305];int cx[305];int cy[305];int dx[305];int dy[305];bool vis[305];bool searchPath(){queue<int> Q;memset(dx, -1, sizeof(dx));memset(dy, -1, sizeof(dy));dis = INF;for (int i = 1; i <= p; i++){if (cx[i] == -1){Q.push(i);dx[i] = 0;}}while (!Q.empty()){int u = Q.front();Q.pop();if (dx[u] > dis)break;for (int v = 1; v <= n; v++){if (a[u][v] && dy[v] == -1){dy[v] = dx[u] + 1;if (cy[v] == -1)dis = dy[v];else{dx[cy[v]] = dy[v] + 1;Q.push(cy[v]);}}}}return dis != INF;}int findPath(int u){for (int v = 1; v <= n; v++){if (!vis[v] && a[u][v] && dy[v] == dx[u] + 1){vis[v] = 1;if (cy[v] != -1 && dy[v] == dis)continue;if (cy[v] == -1 || findPath(cy[v])){cy[v] = u;cx[u] = v;return 1;}}}return 0;}int maxMatch(){int ans = 0;memset(cx, -1, sizeof(cx));memset(cy, -1, sizeof(cy));while (searchPath()){memset(vis, 0, sizeof(vis));for (int i = 1; i <= p; i++){if (cx[i] == -1)ans += findPath(i);}}return ans;}int main(){scanf("%d", &t);while (t--){scanf("%d%d", &p, &n);memset(a, 0, sizeof(a));for (int i = 1; i <= p; i++){int num, x;scanf("%d", &num);for (int j = 1; j <= num; j++){scanf("%d", &x);a[i][x] = 1;}}printf("%s\n", maxMatch() == p ? "YES" : "NO");}return 0;}
2 0
- hdu1083 Courses--最大匹配 & HK算法
- POJ1469 COURSES 【二分图最大匹配·HK算法】
- hdu1083 Courses ( 二分图最大匹配)
- HDU1083--Courses(二分图最大匹配)
- 【二分匹配】 hdu1083 Courses
- 【二分匹配】HDU1083-Courses
- HDU1083 Courses 二分匹配
- hdu1083 Courses(二分匹配)
- Courses HDU1083 -二分图匹配
- HDU1083 Courses(二分图匹配)
- HDU1083(二分图+最大匹配+匈牙利算法)
- HDU1083 最大二分匹配
- 【HDU1083】【最大二分匹配】
- HDU1083 最大二分匹配
- Courses HDU1083(二分图的匹配)
- 【二分图匹配】HDU1083-Courses【模板题】
- HDU1083---Courses (二分图匹配)
- POJ 1469 COURSES(HK算法)
- 教你步步为营掌握自定义ViewGroup
- Struts2学习笔记二(数据验证)
- 1:自动化测试环境--Eclipse环境搭建
- SSH配置
- 重复注解
- hdu1083 Courses--最大匹配 & HK算法
- Hashmap实现原理
- boost之路三 函数对象
- Activity界面显示全解析
- 制作Windows启动U盘
- Eclipse异常之Missing artifact javax.jms:jms:jar
- Android 图表绘制 achartengine 示例解析
- cmake学习笔记
- Java8中Lambda表达式的10个例子