2252 문제와 비슷하지만 3번째 조건인 '가능하면 쉬운 문제부터 풀어야 한다.'
를 고려하여 우선순위 큐로 삽입해야 합니다.
나머지는 2252:줄세우기 와 동일합니다.
import heapq
v, e = map(int, input().split())
graph = [[] for _ in range(v+1)]
indegree = [0] * (v+1)
for i in range(e):
a, b = map(int, input().split())
graph[a].append(b)
indegree[b] += 1
def topology_sort():
result = []
q = []
for i in range(1, v+1):
if indegree[i] == 0:
heapq.heappush(q, i)
while q:
now = heapq.heappop(q)
result.append(now)
for i in graph[now]:
indegree[i] -= 1
if indegree[i] == 0:
heapq.heappush(q, i)
for i in result:
print(i, end =' ')
topology_sort()