#include<bits/stdc++.h>
using namespace std;
int Map[1005][1005];
int K,M,N,a,b,sum;
int match[1005],book[1005];
bool find(int x)
{
for(int i=1;i<=N;i++)
{
if(!book[i]&&Map[x][i])
{
book[i]=1;
if(!match[i]||find(match[i]))
{
match[i]=x;
return 1;
}
}
}
return 0;
}
int main()
{
while(scanf("%d",&K),K)
{
scanf("%d %d",&M,&N);
memset(Map,0,sizeof(Map));
memset(match,0,sizeof(match));
for(int i=0;i<K;i++)
{
scanf("%d %d",&a,&b);
Map[a][b]=1;
}
sum=0;
for(int i=1;i<=M;i++)
{
memset(book,0,sizeof(book));
if(find(i))
sum++;//第i个女生配对成功
}
printf("%d\n",sum);
}
return 0;
}
总结
1.这题因为时间紧迫是抄的,以后要自己写一遍