//很裸的二分匹配,直接写就是了,不过我还是wa了5次,悲剧悲剧===#include <iostream> #include <string> using namespace std; int k,m,n,vis[501],match[501]; int map[501][501]; int dfs(int s) { int i,t; for(i = 1; i<=m; i++) if(map[s][i]&&!vis[i]) { vis[i] = 1; t = match[i]; if(t == 0||dfs(t)) { match[i] = s; return 1; } //match[i] = t; } return 0; } int main() { int i,j,u,v,ans; while(scanf("%d",&k)!=EOF) { if(k == 0)break; scanf("%d %d",&n,&m); ans = 0; memset(map,0,sizeof(map)); memset(match,0,sizeof(match)); for(i = 0; i<k; i++) { scanf("%d %d",&u,&v); map[u][v] = 1; } for(i = 1; i<=n; i++) { memset(vis,0,sizeof(vis)); if(dfs(i))ans++; } printf("%d/n",ans); } return 0; }