RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00213

수강 신청 순서

Gold III 골드 III
난이도
2s
시간 제한
256MB
메모리 제한
1
맞았습니다!!
1
제출 수
100.0%
정답률
레이팅

의견: 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\)의 선수 과목임을 뜻한다. 같은 관계가 두 번 주어지지 않는다.

출력 형식

조건을 만족하는 수강 순서 중 사전순으로 가장 앞서는 것을 한 줄에 공백으로 구분하여 출력한다.

예제 1
입력
4 3
1 2
1 3
3 4
출력
1 2 3 4
설명

1은 2와 3의 선수 과목이고 3은 4의 선수 과목이다. 가능한 순서 중 사전순으로 가장 앞서는 것은 1 2 3 4 이다.

예제 2
입력
3 0
출력
1 2 3
설명

선수 과목 관계가 없으므로 번호가 작은 순서대로 1 2 3 을 출력한다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

수강 신청 순서

개요
출제자 난이도 Gold III 골드 III 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

수강 신청 순서

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8