HDU - 1083 : Courses(匈牙利算法,二分图最大匹配)
2017-08-24 16:12
519 查看
题目链接:HDU - 1083 : Courses
题目大意:有P门课程,N个学生,每门课程有若干个学生选,且每门课都要有一个课代表,但是每个学生至多只能担任一门课的课代表,问能否每门课都能找到课代表
解题分析:将课程和学生看成二分图的左右两部分,由是否选课确定中间的连边,接下来就是裸套匈牙利算法模板了,如果最大匹配数=课程数,则输出”YES”,否则输出”NO”
AC代码:
题目大意:有P门课程,N个学生,每门课程有若干个学生选,且每门课都要有一个课代表,但是每个学生至多只能担任一门课的课代表,问能否每门课都能找到课代表
解题分析:将课程和学生看成二分图的左右两部分,由是否选课确定中间的连边,接下来就是裸套匈牙利算法模板了,如果最大匹配数=课程数,则输出”YES”,否则输出”NO”
AC代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define INF=0x3f3f3f3f; const int maxn=305; int graph[maxn][maxn],vis[maxn]; int cx[maxn],cy[maxn];//x中元素对应y中的匹配,y中元素对应x中的匹配 int nx,ny,m;//x点数,y点数,边数 int find_path(int u)//找增广路 { for(int i=1; i<=ny; i++) { if(graph[u][i] && !vis[i]) { vis[i]=1; if(!cy[i] || find_path(cy[i]))//判断cy[i]是否匹配过,如果匹配过,则试图更改它之前的匹配项 {//如果之前的匹配项能另外找到匹配对象,则这里可以匹配u cy[i]=u; cx[u]=i; return 1; } } } return 0; } int max_match()//最大匹配数 { int res=0; memset(cx,0,sizeof(cx)); memset(cy,0,sizeof(cy)); for(int i=1; i<=nx; i++) { if(!cx[i]) { memset(vis,0,sizeof(vis)); res+=find_path(i); } } return res; } int main() { int t; scanf("%d",&t); while(t--) { memset(graph,0,sizeof(graph)); scanf("%d%d",&nx,&ny); for(int i=1; i<=nx; i++) { int num,x=i; scanf("%d",&num); for(int j=1; j<=num; j++) { int y; scanf("%d",&y); graph[x][y]=1; } } if(max_match()==nx) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- HDU 1083 Courses(二分图最大匹配【匈牙利算法】)
- [HDOJ1083]Courses(二分图最大匹配,匈牙利算法)
- 二分图最大匹配【匈牙利算法】HDU-1083
- hdu 1083 Courses(二分图最大匹配)
- hdu1083 Courses ( 二分图最大匹配)
- hdu 1083 Courses(二分图最大匹配)
- hdu 1083 Courses(二分图最大匹配)
- HDU-1083 Courses 二分图 最大匹配
- 杭电OJ 1083——courses(二分图的匹配问题!匈牙利算法解答)
- HDU 2063 过山车(匈牙利算法)(二分图求最大匹配)
- POJ 1469 COURSES【匈牙利算法入门 二分图的最大匹配 模板题】
- hdu 1083 Courses 二分图最大匹配
- POJ 1469 COURSES【匈牙利算法入门 二分图的最大匹配 模板题】
- Pku acm 1469 COURSES 数据结构题目解题报告(十一)---- 匈牙利算法求二分图的最大匹配
- hdu 1083 Courses(二分匹配之匈牙利算法)
- HDU 1083 Courses 匈牙利算法二分匹配(邻接矩阵存关系)
- HDU 1528 Card Game Cheater(匈牙利算法,二分图最大匹配):
- 匈牙利算法,二分图最大基数匹配(过山车,hdu 2063)
- POJ 1469 COURSES(匈牙利算法二分图最大匹配)
- HDU1083--Courses(二分图最大匹配)