오디션

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

요약
N명의 참가자 사이에 치른 M번의 대결 결과가 주어질 때, 모든 순위가 유일하게 정해지도록 추가로 치러야 할 최소 대결 횟수를 구한다.
난이도

어려움10점 중 8점

유형
그래프, 그리디, 정렬, 조합론
정답자
아직 제출이 없습니다

문제

알고 있는가? 선린 1호관 엘리베이터의 비밀을. 매일 밤, 그 엘리베이터를 타면 지하로 향하는 길이 열린다. 그리고 그곳에선 아무도 모르게, 비밀의 오디션이 개최된다.

이 오디션엔 총 NN명의 참가자가 있다. 오디션의 방식은 간단하다. 두 사람이 결투를 벌이고, 이긴 사람은 11점을 얻는다. 매번 한 명은 승자, 한 명은 패자로 결정되고 무승부는 없다. 지금까지 총 MM번의 결투가 진행되었고, 그 결과는 모두 기록되어 있다.

당신은 참가자들의 순위를 11위부터 NN위까지 정확히 결정하고 싶다. 단, 동점자가 있다면 순위는 결정되지 않는다. 참가자들의 순위를 모두 결정짓기 위해 추가로 치러야 할 결투의 최소 횟수는 몇 번인가?

입력

첫째 줄에 참가자의 수 NN과 지금까지 진행된 결투의 횟수 MM이 공백으로 구분되어 주어진다.

둘째 줄부터 MM개의 줄에 걸쳐, i+1(1≤i≤M)i+1(1\leq i\leq M)번째 줄에는 ii번째 결투의 결과가 주어진다. 각 줄에는 두 사람의 번호 A_i,B_iA\_i,B\_i가 공백으로 구분되어 주어지며, 이는 A_iA\_i가 B_iB\_i와의 결투에서 승리했다는 뜻이다.

출력

참가자들의 순위를 모두 결정짓기 위해 추가로 치러야 할 결투의 최소 횟수를 출력하라.

제한

  • 주어지는 모든 수는 정수이다.
  • 2≤N≤200,0002\leq N\leq 200\\, 000
  • 0≤M≤200,0000\leq M\leq 200\\, 000
  • 1≤A_i,B_i≤N1\le A\_i,B\_i\le N (1≤i≤M1\le i\le M)
  • A_i≠B_iA\_i\ne B\_i (1≤i≤M1\le i\le M)

힌트

정답이 32비트 정수 범위를 넘을 수 있으므로, C/C++에서는 long long, Java에서는 long과 같은 자료형을 사용하는 것을 권장한다.

예제2

  1. 예제 1

    입력
    4 3
    1 3
    1 2
    2 1
    
    예상 출력
    3
    
  2. 예제 2

    입력
    3 0
    
    예상 출력
    3