hdu 1083 Courses(二分图匹配 匈牙利算法)
来源:互联网 发布:c语言不等于 编辑:程序博客网 时间:2024/05/16 10:40
很典型的二分图匹配问题。要求 每一门课程 都有一个独一无二的 课代表。换句话说,也就是 每一门课程都要与一个人 一对一的相连。
问,是否存在这样的情况。
以下是代码:
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int ed[555][555];//邻接矩阵 表示课程y是否与人x有边相连int vis[555];//标记数组,标记第x个人有没有被课程y考虑过 y为传入的课程参数int m;int match[555];//match[x] = y 表示 x号人 是 课程y的课代表bool xiongyali(int x){ int i; for(i = 1; i <= m ; i++) { if(vis[i] == 1 || ed[x][i] == 0)continue;//如果没有边相连或者i已经被之前的课程考虑过那么不进行判断 vis[i] =1 ;//防止下面的递归陷入无限的死循环 if( match[i] == 0 || xiongyali(match[i]))//看能否两者相连 { match[i] = x; return true; } } return false;}int main(){ int n,i,j,k,T,x,y,z; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); memset(ed,0,sizeof(ed)); for(i = 1; i <= n; i ++) { scanf("%d",&x); while(x--) { scanf("%d",&y); ed[i][y] = 1; } } int ans = 0; memset(match,0,sizeof(match)); for(i =1; i <= n; i++) { memset(vis,0,sizeof(vis));//注意这边的标记数组每次都要清空 if(xiongyali(i))ans++;//ans 表示边数 else break; } if(ans == n)printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- hdu 1083 Courses(二分图匹配 匈牙利算法)
- HDU 1083 Courses(二分图最大匹配【匈牙利算法】)
- 【二分图匹配-匈牙利算法】Courses HDU
- hdu 1082 Courses 二分图最大匹配(匈牙利算法)
- HDU 1082 COURSES (二分图匹配之匈牙利算法)
- HDU 1083 Courses(二分图,匈牙利算法)
- hdu Courses 1083 二分匹配 ,匈牙利算法。。水题
- hdu 1083 Courses(二分匹配之匈牙利算法)
- hdoj 1083 Courses 【匈牙利算法&&二分图匹配】
- poj题目1469 COURSES (二分图匹配,匈牙利算法)
- POJ 1469 COURSES(匈牙利算法二分图最大匹配)
- POJ 1469-COURSES(二分图匹配入门-匈牙利算法)
- HDU 1083 Courses(二分匹配匈牙利算法模板题啊)
- HDU 1083 Courses 匈牙利算法二分匹配(邻接矩阵存关系)
- 杭电OJ 1083——courses(二分图的匹配问题!匈牙利算法解答)
- HDOJ 题目1083Courses(二分图匹配,匈牙利算法模板)
- hdu 1083 Courses (二分图匹配)
- HDU 1083 Courses(二分图匹配)
- 网页开发按顺序执行 script function 返回 undefined ,
- UVA10313- Pay the Price
- java 图像特效之霓虹
- UML中的各种关系在代码中的实现
- Hadoop MapReduce 减小数据倾斜的性能损失
- hdu 1083 Courses(二分图匹配 匈牙利算法)
- Oracle decode函数
- 菜鸟学android——正则表达式,替换
- 线段树2练习
- Servlet第三课 Form 表单的应用
- spring3.0.5MVC 文件下载IE提示无法下载问题解决
- 用chnroutes鉴别国内外DNS地址加快VPN速度
- pdf转换成excel转换器
- The import javax.servlet cannot be resolved解决方法