순위

면접 대비

시간 제한2초메모리 제한1024 MB

요약
경기 결과를 승자에서 패자로 향하는 간선으로 나타내고 사이클에 속한 선수 수를 구합니다.
난이도

보통10점 중 4점

유형
그래프, DFS
정답자
아직 제출이 없습니다

문제

NN명이 참가하는 대회에서 경기가 KK번 열린다. 한 경기에는 서로 다른 두 선수가 나선다. 한 선수가 치르는 경기 수에는 제한이 없고, 모든 상대와 한 번씩 겨룰 필요도 없다. 한 경기도 치르지 않는 선수가 있어도 된다. 무승부는 없어서 경기마다 한 명이 이기고 다른 한 명이 진다.

경기가 모두 끝나면 선수의 순위를 매긴다. 순위를 정하지 못하는 이유는 여러 가지지만 이 문제에서는 승패가 순환하는 경우만 다룬다. 예를 들어 A가 B를 이기고 B가 C를 이겼는데 다시 C가 A를 이겼다면, 이 세 선수의 상대적인 순위는 정하지 못한다.

정확히 말하면, 서로 다른 선수 P1,P2,…,PmP_1, P_2, \dots, P_m (m≥2m \ge 2)이 있어 P1P_1이 P2P_2를 이기고 P2P_2가 P3P_3을 이기고 같은 식으로 이어져 PmP_m이 P1P_1을 이긴 기록이 있으면, 이 mm명의 순위는 순환 때문에 정하지 못한다. 두 선수가 두 번 맞붙어 한 번씩 이긴 경우가 m=2m = 2에 해당한다. 한 선수가 여러 순환에 동시에 속할 수 있는데, 그런 선수도 한 번만 센다.

순환에 걸린 선수만 세므로 다른 이유로 순위를 정하지 못하는 선수, 예를 들어 한 경기도 치르지 않은 선수는 세지 않는다.

경기 결과가 주어질 때 순환 때문에 순위를 정하지 못하는 선수가 몇 명인지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 선수의 수 NN과 경기 수 KK가 빈 칸을 사이에 두고 주어진다. (2≤N≤202 \le N \le 20, 1≤K≤301 \le K \le 30) 선수는 11번부터 NN번까지 번호로 구분한다.

다음 KK개 줄에는 각 줄마다 한 경기의 결과가 정수 네 개 aa, bb, sas_a, sbs_b로 주어진다. aa와 bb는 경기를 치른 두 선수의 번호이고, sas_a와 sbs_b는 각각 선수 aa와 선수 bb가 얻은 점수다. 모든 점수는 1010보다 작은 음이 아닌 정수이며, 점수가 더 큰 선수가 이긴다.

출력

순환 때문에 순위를 정하지 못하는 선수의 수를 출력한다.

예제4

  1. 예제 1

    입력
    10 12
    1 8 2 1
    1 2 5 0
    10 7 1 2
    6 9 6 9
    3 4 3 1
    9 5 3 1
    8 2 6 8
    4 9 3 0
    4 1 5 2
    6 10 3 5
    3 5 1 9
    6 7 9 8
    
    예상 출력
    7
    
  2. 예제 2

    입력
    5 3
    1 3 9 7
    5 1 9 2
    3 5 2 0
    
    예상 출력
    3
    
  3. 예제 3

    입력
    5 6
    1 2 2 1
    1 5 2 1
    1 3 2 1
    5 2 0 5
    5 3 1 8
    2 4 4 2
    
    예상 출력
    0
    
  4. 예제 4

    입력
    10 5
    2 4 0 2
    2 6 5 3
    8 2 8 2
    6 4 6 2
    8 6 0 2
    
    예상 출력
    4