수강 신청 순서
의견: 0
민준이는 컴퓨터공학과의 모든 전공 과목 \(N\)개를 들어야 한다. 어떤 과목들 사이에는 선수 과목 관계가 있어서, 과목 \(a\)가 과목 \(b\)의 선수 과목이면 반드시 \(a\)를 먼저 들은 다음에 \(b\)를 들을 수 있다.
민준이는 한 학기에 한 과목씩만 듣는다고 가정한다. 모든 선수 과목 조건을 만족하면서 \(N\)개의 과목을 듣는 순서를 정하려고 한다. 이런 순서가 여러 개라면, 수강하는 과목 번호를 나열한 수열이 사전순으로 가장 앞서는 순서를 출력한다.
선수 과목 관계에는 모순이 없어서(즉, 그래프에 사이클이 없어서) 항상 모든 과목을 들을 수 있다.
\(1 \le N \le 100{,}000\)
\(0 \le M \le 200{,}000\)
주어지는 선수 과목 그래프에는 사이클이 존재하지 않는다.
첫째 줄에 과목의 수 \(N\)과 선수 과목 관계의 수 \(M\)이 공백으로 구분되어 주어진다.
다음 \(M\)개의 줄에 각각 두 정수 \(a\), \(b\) (\(1 \le a, b \le N\), \(a \ne b\))가 주어지며, 이는 과목 \(a\)가 과목 \(b\)의 선수 과목임을 뜻한다. 같은 관계가 두 번 주어지지 않는다.
조건을 만족하는 수강 순서 중 사전순으로 가장 앞서는 것을 한 줄에 공백으로 구분하여 출력한다.
4 3
1 2
1 3
3 4
1 2 3 41은 2와 3의 선수 과목이고 3은 4의 선수 과목이다. 가능한 순서 중 사전순으로 가장 앞서는 것은 1 2 3 4 이다.
3 0
1 2 3선수 과목 관계가 없으므로 번호가 작은 순서대로 1 2 3 을 출력한다.
riseoj 작성
출처 Original
평가 및 의견
수강 신청 순서
Log in to rate problems.
아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.
풀이 제출
수강 신청 순서