标签:
题目链接:http://poj.org/problem?id=1274
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 23088 | Accepted: 10285 |
Description
Input
Output
Sample Input
5 5 2 2 5 3 2 3 4 2 1 5 3 1 2 5 1 2
Sample Output
4
Source
输入第一行给出n与m
接着n行
每行第一个数代表这个奶牛喜欢的谷仓的个数P,后面接着P个数代表这个奶牛喜欢哪个谷仓
分析: 最大匹配,用匈牙利即可。
#include <stdio.h> #include <string.h> bool maps[205][205]; bool use[205]; int match[205]; int n,m; bool DFS(int u) { for(int i=1;i<=m;i++) { if(!use[i]&&maps[u][i]) { use[i] = true; if(match[i]==-1||DFS(match[i])) { match[i] = u; return true; } } } return false; } int main() { while(scanf("%d%d",&n,&m)!=EOF) { memset(match,-1,sizeof(match)); memset(maps,false,sizeof(maps)); for(int i=1;i<=n;i++) { int num; scanf("%d",&num); for(int j=1;j<=num;j++) { int v; scanf("%d",&v); maps[i][v] = true; } } int num = 0; for(int i=1;i<=n;i++) { memset(use,false,sizeof(use)); if(DFS(i)) num++; } printf("%d\n",num); } return 0; }
标签:
原文地址:http://www.cnblogs.com/TreeDream/p/5760870.html