등수 찾기

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

요약
N명의 학생 사이의 비교 결과가 주어질 때, 이 비교들과 모순되지 않는 모든 전체 순위 중에서 학생 X가 가질 수 있는 최고 순위와 최저 순위를 구한다.
난이도

보통10점 중 6점

유형
그래프, DFS, 위상 정렬, 그리디
정답자
아직 제출이 없습니다

문제

KOI 본선 대회에 NN명의 학생이 참가했다. 이 학생들을 각각 11부터 NN까지 정수로 표현하자. 대회가 끝나고 성적을 발표하는데, 이 대회는 전체 학생의 등수를 발표하는 대신, 두 학생 AA, BB가 대회 본부에 찾아가면 본부는 두 학생 중 어느 학생이 더 잘했는지를 알려준다. 둘 이상의 학생이 동점인 경우는 없다.

자신의 전체 등수가 궁금한 학생들은 둘씩 짝을 지어서 대회 본부에 총 MM번 질문을 했다. 여러분은 등수를 알고 싶은 학생 XX와 대회 본부의 질문에 대한 답들로부터 이 학생 XX의 등수 범위를 찾아서 출력한다. 질문에 대한 답으로 알 수 있는 최대한 정확한 답을 출력한다.

입력

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에 세 정수 NN, MM, XX가 공백을 사이에 두고 주어진다. (2≤N≤1052 \le N \le 10^5, 1≤M≤min⁡(N(N−1)/2,5×105)1 \le M \le \min(N(N-1)/2, 5\times 10^5), 1≤X≤N1 \le X \le N). 다음 MM줄에는 각각 두 정수 AA, BB가 주어지는데, 이 뜻은 학생 AA가 학생 BB보다 더 잘했다는 뜻이다. 같은 AA, BB가 둘 이상의 줄에 주어지는 경우는 없고, 입력된 값이 정확함이 보장된다.

출력

표준 출력으로 두 정수 UU, VV (1≤U≤V≤N1 \le U \le V \le N)를 출력한다. 이는 학생 XX의 가능한 가장 높은 등수가 UU, 가능한 가장 낮은 등수가 VV임을 나타낸다. 만약 학생 XX의 가능한 등수가 정확하게 하나라면, U=VU = V이다.

예제3

  1. 예제 1

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

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

    입력
    5 5 1
    1 3
    2 3
    3 4
    3 5
    4 5
    
    예상 출력
    1 2