#include<iostream> #include<cstdio> #include<string.h> using namespace std; #define max 512 int match[max][max],link[max],v[max],k,n,m; bool dfs(int x)//深搜遍历,寻找增广路径 { for(int i=1;i<=n;i++) if(match[x][i] && !v[i]) { v[i]=true; if(link[i]==-1 || dfs(link[i])) { link[i]=x; return true; } } return false ; } int Xiong() { int cnt=0; memset(link,-1,sizeof(link)); for(int i=1;i<=m;i++) { memset(v,0,sizeof(v)); if(dfs(i)) cnt++;//找到增广路径则匹配树加1 } return cnt; } int main() { int x,y; while(scanf("%d",&k) && k) { memset(match,0,sizeof(match)); scanf("%d%d",&m,&n); for(int i=1;i<=k;i++) { scanf("%d%d",&x,&y); match[x][y]=1; } printf("%d\n",Xiong()); } return 0; }