#include<stdio.h>
#include<string.h>
int n, m;
int mp[105][105];
void floyd()
{
for (int k = 1; k <= m;k++)
for (int j = 1; j <= m;j++)
for (int i = 1; i <= m; i++)
mp[i][j] = mp[i][j] || (mp[i][k] && mp[k][j]);
}
int main()
{
while (~scanf("%d%d", &m, &n))
{
memset(mp, 0, sizeof(mp));
int a, b;
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &a, &b);
mp[a][b] = 1;
}
floyd();
int sum = 0;
for (int i = 1; i <= m; i++)
{
int ans = 0;
for (int j = 1; j <= m; j++)
if (mp[i][j] || mp[j][i])ans++;
if (ans == m - 1)sum++;
}
printf("%d\n", sum);
}
}
#include<string.h>
int n, m;
int mp[105][105];
void floyd()
{
for (int k = 1; k <= m;k++)
for (int j = 1; j <= m;j++)
for (int i = 1; i <= m; i++)
mp[i][j] = mp[i][j] || (mp[i][k] && mp[k][j]);
}
int main()
{
while (~scanf("%d%d", &m, &n))
{
memset(mp, 0, sizeof(mp));
int a, b;
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &a, &b);
mp[a][b] = 1;
}
floyd();
int sum = 0;
for (int i = 1; i <= m; i++)
{
int ans = 0;
for (int j = 1; j <= m; j++)
if (mp[i][j] || mp[j][i])ans++;
if (ans == m - 1)sum++;
}
printf("%d\n", sum);
}
}
