main.cc 749 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <cstdio>
  2. #include <cstring>
  3. using namespace std;
  4. const int N = 500;
  5. const int M = 4500;
  6. const int INF = 0x3F3F3F3F;
  7. bool win[N + 1][N + 1];
  8. int main() {
  9. int n, m, a, b;
  10. while (scanf("%d %d", &n, &m) != EOF) {
  11. memset(win, 0, sizeof(win));
  12. for (int i = 0; i < m; i++) {
  13. scanf("%d %d", &a, &b);
  14. win[a][b] = true;
  15. }
  16. for (int k = 1; k <= n; k++)
  17. for (int i = 1; i <= n; i++)
  18. for (int j = 1; j <= n; j++) win[i][j] |= win[i][k] & win[k][j];
  19. int ans = 0;
  20. for (int i = 1; i <= n; i++) {
  21. int cnt = 0;
  22. for (int j = 1; j <= n; j++) {
  23. if (win[i][j]) cnt++;
  24. if (win[j][i]) cnt++;
  25. }
  26. if (cnt == n - 1) ans++;
  27. }
  28. printf("%d\n", ans);
  29. }
  30. return 0;
  31. }