토너먼트
시간 제한1초메모리 제한128 MB
일부만 치러진 토너먼트 결과가 방향 그래프로 주어질 때, 승패를 지키는 위상 순서 가운데 사전순으로 가장 작은 순위를 구한다.
문제
한 토너먼트에 명의 선수가 참가했다. 선수들은 등록한 순서대로 번부터 번까지 번호를 받는다. 원래는 모든 선수 쌍이 한 번씩 경기를 치를 예정이었지만, 강한 바람 때문에 일부 경기만 치른 상태에서 토너먼트가 중단되었다. 시상식을 미룰 수 없었기 때문에, 심사위원단은 남은 경기를 치르지 못한 채로 최종 순위를 정해야 한다. 또한 두 선수가 같은 순위를 공유할 수는 없다.
순위를 정하기 위해 심판장은 다음 규칙을 세웠다.
- 각 선수는 자신이 맞대결에서 이긴 모든 선수보다 순위에서 반드시 더 높은 자리에 있어야 한다.
이 규칙을 만족하는 순위는 여러 가지가 있을 수 있으므로, 심판장은 두 순위를 비교하는 방법도 정했다.
- 순위 가 순위 보다 더 좋다는 것은, 두 순위가 처음으로 달라지는 가장 높은 자리에서 순위 에 더 먼저 등록한 선수(즉, 번호가 더 작은 선수)가 놓여 있다는 뜻이다.
가능한 가장 좋은 순위를 구하라. 지금까지 치른 경기 결과는 유효한 순위가 적어도 하나 존재함을 보장한다.
입력
첫째 줄에 공백으로 구분된 두 정수 과 이 주어진다 (, ). 여기서 은 선수의 수, 은 치른 경기의 수이다. 이어지는 개의 줄에는 각 경기가 한 줄씩 주어지며, 공백으로 구분된 두 정수, 즉 이긴 선수의 번호와 진 선수의 번호가 이 순서대로 적혀 있다.
출력
가장 좋은 순위를 출력한다. 가장 높은 자리부터 가장 낮은 자리까지, 선수들의 번호를 한 줄에 하나씩 출력한다.