import java.util.*;

class Solution {
    // private static List<List<Integer>> graph = new ArrayList<>();
    private static boolean[][] graph;
    
    public int solution(int n, int[][] results) {
        graph = new boolean[n+1][n+1];
    
        //초기화 계속
        for(int[] result : results){
            graph[result[0]][result[1]] = true;
        }
        
        int count = 0;
        for(int i=1 ; i<=n ; i++){
            int wins = countWin(i, new boolean[n+1], n);
            int loses = countLose(i, new boolean[n+1], n);
            if(wins + loses + 1 == n) ++count;
        }
        return count;
    }
    
    private static int countWin(int playerIdx, boolean[] visited, int n){
        int count = 0;
        for(int i=1; i<=n ; i++){
             //방문했는가? 다음꺼 본다.
            if(visited[i]) continue;
            
            //트루인가? 트루면 이겼다는 뜻이다!
            if(graph[playerIdx][i]) {
                //방문표시한다.
                visited[i] = true;
                count += countWin(i, visited, n);
            }
        }
        return count;
    }
    
    private static int countLose(int playerIdx, boolean[] visited,int n){
        int count = 0;
        for(int i=1; i<=n ; i++){
             //방문했는가? 다음꺼 본다.
            if(visited[i]) continue;
            
            //트루인가? 트루면 이겼다는 뜻이다!
            if(graph[i][playerIdx]) {
                //방문표시한다.
                visited[i] = true;
                count += countLose(i, visited, n);
            }
        }
        return count;
    }
}






     /*
        4가 3을 이긴다      
        4가 2를 이긴다
        3가 2를 이긴다
        1이 2를 이긴다
        2가 5를 이긴다
        
        4 -> 3 
         |   |
         |   v
         | -> 2<-1
              |
              v
              5
        */