// P2419 牛大赛。胜者指向败者,闭包后判断是否与其余点全部可比较。 #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; if (!(cin >> n >> m)) return 0; vector> reach(n, vector(n, false)); for (int i = 0, a, b; i < m; ++i) { cin >> a >> b; reach[a-1][b-1] = true; } for (int k = 0; k < n; ++k) for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) reach[i][j] = reach[i][j] || (reach[i][k] && reach[k][j]); int ans = 0; for (int v = 0; v < n; ++v) { int known = 0; for (int j = 0; j < n; ++j) { if (j == v) continue; if (reach[v][j] || reach[j][v]) ++known; } if (known == n-1) ++ans; } cout << ans << '\n'; }