병사 순열 복원
면접 대비시간 제한1초메모리 제한1024 MB
위치 쌍을 앞에서부터 k개 보았을 때 병사의 순서가 하나로 정해지는 최소 k를 구하고, 끝까지 유일하지 않으면 -1을 출력합니다.
문제
페트로프 장군은 제식 훈련을 무엇보다 좋아한다. 어느 날 명의 병사가 대열에 참여했다. 편의상 병사에게는 1부터 까지 번호가 매겨져 있다. 병사들은 한 줄로 섰고, 번째 자리에는 번호가 인 병사가 서 있었다. 이후 장군의 부관이 줄을 따라 걸으며 배열이 장군이 정한 순서와 정확히 일치하는지 확인했다.
잠시 후 장군은 같은 순서로 병사들을 다시 세우고 싶어 했다. 그러나 처음에 어떻게 세웠는지 잊어버렸다. 다행히 부관은 기억력이 좋다. 부관은 개의 위치 쌍 에 대해, 자리에 있던 병사의 번호가 자리에 있던 병사의 번호보다 작았다는 것을 기억한다.
부관은 쌍 를 하나씩 장군에게 알려준다. 그러나 장군은 병사를 빨리 세우기 시작하고 싶어 한다. 부관이 처음 개의 쌍을 알려준 시점에 장군이 찾는 순열을 한 가지로 정할 수 있도록, 가능한 최소의 를 구하라.
입력
첫 줄에는 두 정수 과 이 주어진다. 은 작전에 참여한 병사의 수이고, 은 부관이 기억하는 위치 쌍의 개수다(; ).
이어지는 개의 줄에는 부관이 알려주는 순서대로 쌍 가 한 줄에 하나씩 주어진다. 이는 위치 의 병사 번호가 위치 의 병사 번호보다 작다는 뜻이다(; ).
각 쌍은 최대 한 번만 나타난다. 입력은 모순이 없음이 보장된다. 기억하는 조건을 모두 만족하는 순열이 적어도 하나 존재한다.
출력
순열을 한 가지로 복원할 수 있게 되는 가장 작은 쌍의 번호 를 한 줄에 출력하라. 순열을 한 가지로 복원할 수 없다면 을 출력하라.
힌트
첫 번째 예시에서 병사들은 순서로 서 있었다. 부관이 기억하는 네 번째 쌍을 알려준 뒤에는 이 순서를 복원할 수 있다.
두 번째 예시에서는 입력을 만족하는 배치가 네 가지 있다. , , , 이다.