您的位置:首页 > 其它

Machine Schedule(poj 1274)

2016-07-01 10:03 337 查看
题目大意:有n个奶牛和m个谷仓,现在每个奶牛有自己喜欢去的谷仓,并且它们只会去自己喜欢的谷仓吃东西,问最多有多少奶牛能够吃到东西

输入第一行给出n与m

接着n行

每行第一个数代表这个奶牛喜欢的谷仓的个数P,后面接着P个数代表这个奶牛喜欢哪个谷仓

#include<cstdio>
#include<iostream>
#include<cstring>
#define M 510
using namespace std;
int used[M],belong[M],a[M][M],n,m;
int find(int i)
{
for(int j=1;j<=m;j++)
if(!used[j]&&a[i][j])
{
used[j]=1;
if(!belong[j]||find(belong[j]))
{
belong[j]=i;
return 1;
}
}
return 0;
}
void work()
{
for(int i=1;i<=n;i++)
{
int x,y;
scanf("%d",&x);
for(int j=1;j<=x;j++)
{
scanf("%d",&y);
a[i][y]=1;
}
}
int tot=0;
for(int i=1;i<=n;i++)
{
if(find(i))
{
memset(used,0,sizeof(used));
tot++;
}
}
printf("%d\n",tot);
}
int main()
{
freopen("jh.in","r",stdin);
while(scanf("%d%d",&n,&m)==2)
{
memset(a,0,sizeof(a));
memset(belong,0,sizeof(belong));
work();
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: