1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #define maxn 210
5 using namespace std;
6 int n,m,g[maxn][maxn],ans,match[maxn];
7 bool f[maxn];
8 int Dfs(int s)
9 {
10 for(int i=1;i<=n;i++)
11 if(f[i]==0&&g[s][i]==1)
12 {
13 f[i]=1;
14 if(match[i]==0||Dfs(match[i]))
15 {
16 match[i]=s;
17 return 1;
18 }
19 }
20 return 0;
21 }
22 int main()
23 {
24 scanf("%d%d",&n,&m);
25 int x,y;ans=n;
26 for(int i=1;i<=m;i++)
27 {
28 scanf("%d%d",&x,&y);
29 g[x][y]=1;
30 }
31 for(int k=1;k<=n;k++)
32 for(int i=1;i<=n;i++)
33 for(int j=1;j<=n;j++)
34 g[i][j]=g[i][j]||(g[i][k]&&g[k][j]);
35 for(int i=1;i<=n;i++)
36 {
37 memset(f,0,sizeof(f));
38 ans-=Dfs(i);
39 }
40 printf("%d\n",ans);
41 return 0;
42 }