题意:
最经典的最大匹配模板题了
#include <bits/stdc++.h>
using namespace std;
#define se second
#define fi first
#define ll long long
#define CLR(a,b) memset(a,(b),sizeof(a))
const int MAXN = (int)1e3+10;
int k, m, n;
bool mps[MAXN][MAXN], used[MAXN];
int bl[MAXN];
bool find(int x) {
for(int i = 1; i <= m; ++i) { //枚举每个妹子的关系
if(mps[i][x] && used[i]== false) {
used[i] = true;
if(bl[i]==0 || find(bl[i])) {
bl[i] = x;
return true;
}
}
}
return false;
}
int main() {
ios::sync_with_stdio(false);
while(cin >> k >> m >> n) {
if(k == 0) break;
CLR(mps, false); CLR(bl, 0);
for(int i = 1; i <= k; ++i) {
int u, v;
cin >> u >> v;
mps[u][v] = true;
}
int ans = 0;
for(int i = 1; i <= n; ++i) { // 汉子每次寻找妹子,初始化
CLR(used, false);
if(find(i)) ans++;
}
cout << ans << endl;
}
return 0;
}