1 #include <bits/stdc++.h>
2
3 using namespace std;
4
5 #define re register
6 #define rep(i, a, b) for (re int i = a; i <= b; ++i)
7 #define repd(i, a, b) for (re int i = a; i >= b; --i)
8 #define maxx(a, b) a = max(a, b);
9 #define minn(a, b) a = min(a, b);
10 #define LL long long
11 #define inf (1 << 30)
12
13 inline int read() {
14 int w = 0, f = 1; char c = getchar();
15 while (!isdigit(c)) f = c == '-' ? -1 : f, c = getchar();
16 while (isdigit(c)) w = (w << 3) + (w << 1) + (c ^ '0'), c = getchar();
17 return w * f;
18 }
19
20 const int maxn = 1000 + 5;
21
22 int e[maxn << 1][maxn << 1], v[maxn], lk[maxn];
23 int n, m, E;
24
25 bool find(int u) {
26 rep(i, 1, m)
27 if (!v[i] && e[u][i+n]) {
28 v[i] = 1;
29 if (!lk[i] || find(lk[i])) {
30 lk[i] = u;
31 return true;
32 }
33 }
34 return false;
35 }
36
37 int main() {
38 n = read(), m = read(), E = read();
39
40 rep(i, 1, E) {
41 register int u = read(), v = read();
42 e[u][v+n] = e[v+n][u] = 1;
43 }
44
45 int cnt = 0;
46 rep(i, 1, n) {
47 memset(v, 0, sizeof(v)); // 如果题目要求比较高,不要用这句话,改为时间戳判断。
48 if (find(i)) cnt++;
49 }
50
51 printf("%d", cnt);
52 return 0;
53 }