본문 바로가기

개발/알고리즘

위상 정렬

문제


DAG(Directed Acyclic Graph)는 방항셩이 있는 간선으로 이루어진 그래프 중, 사이클이 없는 그래프를 의미한다. DAG에서는 위상 정렬을 항상 할 수 있다.


DAG가 주어질 때, 위상 정렬을 하는 프로그램을 작성하시오.




입력


첫 번째 줄에 그래프의 정점의 개수 V, 간선의 개수 E가 공백으로 분리되어 주어진다. (1 ≤ V ≤ 50,000, 1 ≤ E ≤ 100,000)


두 번째 줄부터 E개의 줄에 걸쳐 각 간선의 정보인 x, y가 공백으로 분리되어 주어진다. 이는 x에서 출발하여 y에 도착하는 유항 간선이 존재한다는 것을 의미한다. (1 ≤ x, y ≤ V, x ≠ y)


주어지는 그래프는 항상 DAG이고, 1번으로 들어오는 간선은 없다.




출력


첫 번째 줄에 위상 정렬의 결과를 출력한다. 답이 여러 가지인 경우, 그 중 아무 것이나 출력한다.




힌트


입력 예제


4 4

1 2

1 3

2 4

3 4


출력 예제


1 2 3 4


혹은


1 3 2 4



'개발 > 알고리즘' 카테고리의 다른 글

피크닉  (0) 2016.12.03
유령선  (0) 2016.12.03
그래프 순회  (0) 2016.12.03
구간의 대표값  (0) 2016.12.03
중앙값  (0) 2016.12.03