/*
Name:nyoj-211-Cow Contest
Copyright:
Author:
Date: 2018/4/27 21:02:06
Description:
floyd算法
大佬的惊奇思路
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int MAXN = ;
const int INF = 0x3f3f3f3f;
int N, g[MAXN][MAXN], M; void floyd() {
for (int k=; k<=N; k++) {
for (int i=; i<=N; i++) {
for (int j=; j<=N; j++) {
if (g[i][k] && g[k][j])
g[i][j] = ;//有关系
}
}
}
}
int main()
{
while (cin>>N>>M, N+M) {
memset(g, , sizeof(g));
for (int i=; i<M; i++) {
int x, y;
cin>>x>>y;
g[x][y] = ;
}
floyd();
int i, j, ans=;
for (i=; i<=N; i++) {
for (j=; j<=N; j++) {
if (i==j) continue;
if (g[i][j] == && g[j][i] == ) break;//和其他牛中的一头没有关系就不能确定排名
}
if (j > N) ans++;
}
cout<<ans<<endl;
}
return ;
}