문제는 백준에서 확인 할 수 있다.
import sys
if __name__ == "__main__":
    answer = 0
    N, M = map(int, input().split())
    adj = [[0]*N for _ in range(N)]
    for i in range(N):
        adj[i][i] = 0
    
    for _ in range(M):
        a, b = map(int, sys.stdin.readline().rstrip().split())
        adj[a-1][b-1] = 1
    # for line in adj:
    #     print(line)
    
    for mid in range(N):
        for i in range(N):
            for j in range(N):
                # adj[i][j] = min([adj[i][j], adj[i][mid]+adj[mid][j]])
                if adj[i][mid] == 1 and adj[mid][j] == 1:
                    adj[i][j] = 1
    # for line in adj:
    #     print(line)
    for i in range(N):
        flag = True
        for j in range(N):
            if i != j and \
                adj[i][j] == 0 and \
                adj[j][i] == 0:
                flag = False
        
        if flag:
            answer += 1
    print(answer)