poj 1469 二分图最大匹配
2013-08-23 21:58
281 查看
传送门
题意:有p门课,n个学生。给你每节课选的学生编号。要组成个委员会,由各门课课代表组成,学了某门课的人都可能成为该课课代表,在委员会的每个人都是1门课的课代表,问能否组成委员会。
思路:判断最大匹配是否等于课的门数即可。
ps:代码好久前的了,变量有点混乱,见谅。
题意:有p门课,n个学生。给你每节课选的学生编号。要组成个委员会,由各门课课代表组成,学了某门课的人都可能成为该课课代表,在委员会的每个人都是1门课的课代表,问能否组成委员会。
思路:判断最大匹配是否等于课的门数即可。
ps:代码好久前的了,变量有点混乱,见谅。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,m,l[305],t,num,a,ans; bool v[400],p[400][400]; bool dfs(int x) { for(int i=1;i<=m;i++) { if(p[x][i]&&!v[i]) { v[i]=1; if(l[i]==-1||dfs(l[i])) { l[i]=x; return true; } } } return false; } int main() { scanf("%d",&t); while(t--) { memset(l,-1,sizeof(l)); memset(p,0,sizeof(p)); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&num); for(int j=0;j<num;j++) { scanf("%d",&a); p[i][a]=1; } } ans=0; for(int i=1;i<=n;i++) { memset(v,0,sizeof(v)); if(dfs(i))ans++; } if(ans==n)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
相关文章推荐
- 二分图的两种算法-最大匹配与最优匹配 poj--1469,2536
- poj 1469 COURSES (二分图最大匹配)
- POJ 1469 && ZOJ 1140 --COURSES【二分图 && 最大匹配】
- poj 1469 二分图最大匹配
- POJ1469[COURSES] 二分图最大匹配 匈牙利算法
- 【POJ1469】Courses-二分图最大匹配
- 利用匈牙利算法&Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES
- POJ 1469 COURSES【匈牙利算法入门 二分图的最大匹配 模板题】
- poj2446 && poj1469 二分图最大匹配
- POJ1469 COURSES 【二分图最大匹配·HK算法】
- POJ 1469 COURSES(二分图最大匹配)
- POJ 1469 COURSES【匈牙利算法入门 二分图的最大匹配 模板题】
- POJ 1469 二分图最大匹配
- poj 1469(二分图最大匹配)
- POJ 1469 COURSES(匈牙利算法二分图最大匹配)
- POJ 1469二分图最大匹配
- poj 2446 poj 1469 poj 1274 二分图最大匹配
- POJ 1469 COURSES(二分图最大匹配) (矩阵和邻接表的模板题)
- poj 1469(二分图 最大匹配)
- POJ 1469 COURSES(二分图最大匹配)