#include <iostream>
#include <algorithm>
#include <memory.h>
using namespace std;
int map[505][505];//横男竖女牵手图
int vis[505];
int mat[505];//记录女生的对象是谁
int k,m,n;
int find(int a);
int main(void){
while (cin>>k)
{
if (k==0)
{
break;
}
cin>>m>>n;
memset(map,0,sizeof(map));
memset(mat,-1,sizeof(mat));
for (int i = 0; i < k; i++)
{
int a,b;
cin>>a>>b;
map[a][b]=1;//女a男b记录牵手
}
int count=0;
for (int i = 1; i <= n; i++)
{
memset(vis,0,sizeof(vis));
if (find(i))//男嘞去找对象
{
count++;
}
}
cout<<count<<endl;;
}
return 0;
}
int find(int a){
for (int j = 1; j <= m; j++)
{
if (vis[j]==0&&map[j][a])//女生未被该男生问过且看得上该男生
{
vis[j]=1;//标记男生找过她
if (mat[j]==-1||find(mat[j]))//女的没有被牵过或者她的对象有备胎
{
mat[j]=a;//牵手成功
return 1;
}
}
}
return 0;
}
01-27
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交