constint N = 1e4 + 5; int n, m, vis[N], s[N]; vector<int> e[N];
voiddfs(int u){ vis[u] = 1; s[u]++; for (auto v : e[u]) { if (!vis[v]) dfs(v); } }
intmain(){ scanf("%d %d", &n, &m); for (int i = 1; i <= m; i++) { int a, b; scanf("%d %d", &a, &b); e[a].push-back(b); } for (int i = 1; i <= n; i++) { memset(vis, 0, sizeof vis); dfs(i); } int res = 0; for (int i = 1; i <= n; i++) res += (s[i] == n); printf("%d\n", res); return0; }