아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

작전 <<순열>>

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

요약
미지의 순열의 위치들 사이 부등식이 순서대로 주어질 때, 순열을 유일하게 결정하는 가장 이른 접두사의 끝을 구하고, 불가능하면 -1을 출력한다.
난이도

어려움10점 중 8점

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

문제

페트로프 장군은 열병식을 가장 좋아한다. 어느 날 열병식에 nn명의 병사가 참여했고, 편의상 11부터 nn까지 번호가 붙어 있다. 병사들은 한 줄로 늘어섰고, ii번 위치에는 번호가 aia_i인 병사가 섰다. 그 후 장군의 부관이 열을 따라 걸으며 순열이 장군이 생각한 것과 정확히 일치하는지 확인했다.

얼마 후 장군은 병사들을 다시 같은 순서로 세우고 싶어졌다. 하지만 그때 병사들을 어떻게 세웠는지 잊어버렸다. 다행히 장군의 부관은 기억력이 좋아서, mm개의 위치 쌍 xi,yix_i, y_i에 대해 xix_i번 위치에 섰던 병사의 번호가 yiy_i번 위치에 섰던 병사의 번호보다 작다는 것을 기억하고 있다.

부관은 장군에게 xi,yix_i, y_i 쌍을 차례로 알려 주기 시작했다. 하지만 장군은 빨리 병사들을 세우기 시작하고 싶다. 부관이 처음 kk개의 위치 쌍을 알려 주는 순간 찾는 순열을 유일하게 결정할 수 있게 되는 최소 kk를 구하도록 도와주자.

입력

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

다음 mm개 줄에는 부관이 기억하는 쌍이 장군에게 알려 주는 순서대로 주어진다. 각 줄에는 두 수 xix_i와 yiy_i가 주어지며, 이는 xix_i번 위치에 있던 병사의 번호가 yiy_i번 위치에 있던 병사의 번호보다 작다는 뜻이다 (1≤xi,yi≤n1 \le x_i, y_i \le n; xi≠yix_i \ne y_i).

각 쌍 xi,yix_i, 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