1 #include<bits/stdc++.h>
2 using namespace std;
3 bitset<110> a[110];
4 bitset<110> vis;
5 int bf[110],n,f[110][110];
6 int read()
7 {
8 int s=0,fh=1;char ch=getchar();
9 while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)fh=-1;ch=getchar();}
10 while(ch>=‘0‘&&ch<=‘9‘){s=s*10+(ch-‘0‘);ch=getchar();}
11 return s*fh;
12 }
13 int xyl(int u)
14 {
15 int v;
16 for(v=1;v<=n;v++)
17 {
18 if(a[u][v]!=0&&vis[v]==0)
19 {
20 vis[v]=1;
21 if(xyl(bf[v])==1||bf[v]==0)
22 {
23 bf[v]=u;
24 return 1;
25 }
26 }
27 }
28 return 0;
29 }
30 int main()
31 {
32 int m,i,j,x,y,ans;
33 n=read();m=read();
34 //for(i=1;i<=n;i++)a[i][i]=1;
35 for(i=1;i<=m;i++)
36 {
37 x=read();y=read();
38 a[x][y]=1;
39 }
40 for(i=1;i<=n;i++)
41 {
42 for(j=1;j<=n;j++)
43 {
44 if(a[j][i])a[j]|=a[i];
45 }
46 }
47 /*for(i=1;i<=n;i++)
48 {
49 for(j=1;j<=n;j++)
50 {
51 if(a[i][j]&&i!=j)f[i][j]=1;
52 }
53 }*/
54 memset(bf,0,sizeof(bf));
55 ans=0;
56 for(i=1;i<=n;i++)
57 {
58 vis.reset();
59 ans+=xyl(i);
60 }
61 printf("%d",n-ans);
62 fclose(stdin);
63 fclose(stdout);
64 return 0;
65 }