杭电2063——匈牙利 原题链接 # include <iostream> # include <algorithm> # include <cstring> using namespace std; const int maxn = 505; int line[maxn][maxn]; int girl[maxn]; int used[maxn]; int k, m, n; bool fin(int x) { for (int j = 1; j <= n; j++) { if (line[x][j] == 1 && used[j] == 0) { used[j] = 1; if (girl[j] == 0 || fin(girl[j])) { girl[j] = x; return true; } } } return false; } int main() { while (cin >> k && k != 0) { memset(line, 0, sizeof(line)); memset(girl, 0, sizeof(girl)); cin >> m>> n; int x, y; for (int i = 0; i < k; i++) { cin >> x >> y; line[x][y]= 1; } int sum = 0; for (int i = 1; i <= m; i++) { memset(used, 0, sizeof(used)); if (fin(i)) { sum++; } } cout << sum << endl; } return 0; }