만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

병사 순열 복원

면접 대비

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

요약
위치 쌍을 앞에서부터 k개 보았을 때 병사의 순서가 하나로 정해지는 최소 k를 구하고, 끝까지 유일하지 않으면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
위상 정렬, 그래프, 이분 탐색
정답자
아직 제출이 없습니다

문제

페트로프 장군은 제식 훈련을 무엇보다 좋아한다. 어느 날 nn명의 병사가 대열에 참여했다. 편의상 병사에게는 1부터 nn까지 번호가 매겨져 있다. 병사들은 한 줄로 섰고, ii번째 자리에는 번호가 aia_i인 병사가 서 있었다. 이후 장군의 부관이 줄을 따라 걸으며 배열이 장군이 정한 순서와 정확히 일치하는지 확인했다.

잠시 후 장군은 같은 순서로 병사들을 다시 세우고 싶어 했다. 그러나 처음에 어떻게 세웠는지 잊어버렸다. 다행히 부관은 기억력이 좋다. 부관은 mm개의 위치 쌍 xi,yix_i, y_i에 대해, xix_i 자리에 있던 병사의 번호가 yiy_i 자리에 있던 병사의 번호보다 작았다는 것을 기억한다.

부관은 쌍 xi,yix_i, y_i를 하나씩 장군에게 알려준다. 그러나 장군은 병사를 빨리 세우기 시작하고 싶어 한다. 부관이 처음 kk개의 쌍을 알려준 시점에 장군이 찾는 순열을 한 가지로 정할 수 있도록, 가능한 최소의 kk를 구하라.

입력

첫 줄에는 두 정수 nn과 mm이 주어진다. nn은 작전에 참여한 병사의 수이고, mm은 부관이 기억하는 위치 쌍의 개수다(2≤n≤1052 \le n \le 10^5; 1≤m≤1051 \le m \le 10^5).

이어지는 mm개의 줄에는 부관이 알려주는 순서대로 쌍 xi,yix_i, y_i가 한 줄에 하나씩 주어진다. 이는 위치 xix_i의 병사 번호가 위치 yiy_i의 병사 번호보다 작다는 뜻이다(1≤xi,yi≤n1 \le x_i, y_i \le n; xi≠yix_i \ne y_i).

각 쌍은 최대 한 번만 나타난다. 입력은 모순이 없음이 보장된다. 기억하는 조건을 모두 만족하는 순열이 적어도 하나 존재한다.

출력

순열을 한 가지로 복원할 수 있게 되는 가장 작은 쌍의 번호 kk를 한 줄에 출력하라. 순열을 한 가지로 복원할 수 없다면 −1-1을 출력하라.

힌트

첫 번째 예시에서 병사들은 (5,2,1,3,4)(5, 2, 1, 3, 4) 순서로 서 있었다. 부관이 기억하는 네 번째 쌍을 알려준 뒤에는 이 순서를 복원할 수 있다.

두 번째 예시에서는 입력을 만족하는 배치가 네 가지 있다. (1,3,4,2)(1, 3, 4, 2), (2,3,4,1)(2, 3, 4, 1), (3,2,4,1)(3, 2, 4, 1), (4,2,3,1)(4, 2, 3, 1)이다.

예제2

  1. 예제 1

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

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