만드는 중입니다

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

최악의 기자

면접 대비

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

요약
상위 순위 팀이 항상 이기는 리그에서 일부 경기 결과가 주어질 때, 사전순으로 가장 작은 순위표를 구하고 그것이 유일한지 판별한다.
난이도

보통10점 중 6점

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

문제

당신은 스포츠 기사를 담당하는 신문사 기자입니다.

어제까지 nn개의 축구팀이 참가한 리그전(round-robin, 모든 팀이 서로 한 번씩 맞붙는 리그)이 열렸습니다. 대회 운영 위원회는 경기 결과와 규정에 따라 각 팀에게 1위부터 nn위까지 서로 다른 순위를 매겼습니다. 당신에게는 일부 경기의 승패와 함께 다음 정보가 전달되었습니다.

  • 정보 1: 무승부인 경기는 없었습니다.
  • 정보 2: 모든 팀의 순위는 서로 다릅니다.
  • 정보 3: 1≤a<b≤n1 \le a < b \le n인 모든 aa, bb에 대해, aa위 팀과 bb위 팀의 경기에서는 반드시 aa위 팀이 이겼습니다. (즉, 순위가 더 높은 팀이 순위가 더 낮은 팀을 항상 이깁니다.)

일부 경기의 승패와 정보 1~3을 바탕으로, 전달된 정보에 모순되지 않는 순위표를 하나 복원하고, 그 순위표 외에 정보에 모순되지 않는 다른 순위표가 존재하는지도 판정하세요.

순위표란 1위부터 nn위까지 팀을 차례대로 나열한 것을 말합니다.

정보에 모순되지 않는 순위표가 여러 개일 수 있으므로, 그중 사전순으로 가장 앞서는 순위표를 출력하세요. (1위부터 nn위까지 나열한 팀 번호의 수열을 사전순으로 비교하여 가장 작은 것을 고릅니다.)

입력

첫째 줄에 축구팀의 수 nn이 주어집니다. 각 팀에는 1부터 nn까지의 번호가 붙어 있습니다.

둘째 줄에 알려진 경기 승패의 개수 mm이 주어집니다.

이어지는 mm개의 줄에는 각각 공백으로 구분된 두 정수 ii, jj가 주어지며, 이는 번호 ii인 팀이 번호 jj인 팀을 이겼음을 나타냅니다.

nn, mm은 1≤n≤50001 \le n \le 5000, 1≤m≤1000001 \le m \le 100000을 만족합니다.

출력

출력은 n+1n + 1개의 줄로 이루어집니다.

첫째 줄부터 nn째 줄까지에는 정보에 모순되지 않는 순위표를 출력합니다. ii째 줄 (1≤i≤n1 \le i \le n)에는 ii위 팀의 번호를 출력하세요. 조건을 만족하는 순위표가 여러 개라면 사전순으로 가장 앞서는 것을 출력합니다.

n+1n + 1째 줄에는 출력한 순위표 외에 정보에 모순되지 않는 다른 순위표가 존재하는지를 나타내는 정수를 출력합니다. 존재하지 않으면(순위표가 유일하면) 0을, 존재하면 1을 출력하세요.

예제2

  1. 예제 1

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

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