1 /****************************************************************************************************
2 Target: Bipartite Graph Match (According to the problem named "star") O(n*n)
3 Author: Xue Zhonghao
4 Date: 2014-3-11 19:15:20
5 ****************************************************************************************************/
6 #include<cstdio>
7 #include<cstdlib>
8 #include<iostream>
9 #include<fstream>
10 using namespace std;
11 ifstream fin("input.txt");
12 //ofstream fout("output.txt");
13
14 #define clr(a,b) memset(a,b,sizeof(a))
15
16 #define cin fin
17 //#define cout fout
18
19 #define MAXA 500
20 #define MAXB 500
21
22 int a[MAXA][MAXB];
23 int vis[MAXB];
24 int d[MAXB];
25
26 int find(int k) {
27 for(int i = 1; i <= a[k][0]; ++i)
28 if(!vis[a[k][i]]) {
29 vis[a[k][i]] = 1;
30 if(d[a[k][i]] == 0 || find(d[a[k][i]])) {
31 d[a[k][i]] = k;
32 return 1;
33 }
34 }
35 return 0;
36 }
37
38 int main(void)
39 {
40 int N, K;
41 cin>>N>>K;
42 int x, y;
43 for(int i = 0; i < K; ++i) {
44 cin>>x>>y;
45 a[x][++a[x][0]] = y;
46 }
47 int ans = 0;
48 for(int i = 1; i <= N; ++i) {
49 clr(vis, 0);
50 if(find(i)) ans++;
51 }
52 cout<<ans<<endl;
53 system("pause");
54 return 0;
55 }