목차

문제집

ps
링크acmicpc.net/…
출처BOJ
문제 번호1766
문제명문제집
레벨골드 2
분류

위상 정렬

시간복잡도O(VlogV + E)
인풋사이즈V<=32,000, E<=100,000
사용한 언어Python
제출기록44332KB / 444ms
최고기록208ms
해결날짜2021/09/30

풀이

코드

"""Solution code for "BOJ 1766. 문제집".

- Problem link: https://www.acmicpc.net/problem/1766
- Solution link: http://www.teferi.net/ps/problems/boj/1766

Tags: [TopologicalSort]
"""

import graphlib
import heapq
import sys


def main():
    N, M = [int(x) for x in sys.stdin.readline().split()]
    ts = graphlib.TopologicalSorter()
    for i in range(1, N + 1):
        ts.add(i)
    for _ in range(M):
        A, B = [int(x) for x in sys.stdin.readline().split()]
        ts.add(B, A)

    answer = []
    heap = []
    ts.prepare()
    while ts:
        for problem in ts.get_ready():
            heapq.heappush(heap, problem)
        problem_to_solve = heapq.heappop(heap)
        answer.append(problem_to_solve)
        ts.done(problem_to_solve)

    print(*answer)


if __name__ == '__main__':
    main()