标签:
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 19272 | Accepted: 8737 |
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
题意:有n头奶牛,m个牛圈,奶牛只有在自己喜欢的牛圈里才会产奶,接下来n行(例题中为5,所以为1-5号牛),第一个为k,接下来k个数是第i个牛喜欢的牛圈,求有多少奶牛能最好的产奶。
思路:裸地二分图
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
int map[210][210];
int vis[210];
int link[210];
int n,m;
int dfs(int u)
{
int i;
for(i=1;i<=n;i++){
if(!vis[i]&&map[u][i]){
vis[i]=1;
if(link[i]==0||dfs(link[i])){
link[i]=u;
return 1;
}
}
}
return 0;
}
int main()
{
int i,j,k,t;
int sum;
while(~scanf("%d %d",&n,&m)){
memset(map,0,sizeof(map));
memset(link,0,sizeof(link));
for(i=1;i<=n;i++){
scanf("%d",&k);
while(k--){
scanf("%d",&t);
map[t][i]=1;
}
}
sum=0;
for(i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
if(dfs(i))
sum++;
}
printf("%d\n",sum);
}
return 0;
}
POJ 1274-The Perfect Stall(二分图_最大匹配)
标签:
原文地址:http://blog.csdn.net/u013486414/article/details/42708513