백준(1766) - 문제집 Python
백준(1766) - 문제집
문제풀이: 그래프, 파이썬
해결방법
위상정렬 알고리즘을 사용하면 되는데, 문제 조건에 가능하면 쉬운 문제부터 풀어야 한다고 했으므로 우선순위 큐를 활욯하면 된다.
예시)
4 2
4 2
3 1
import heapq
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
indegree = [0] * (n + 1)
graph = [[] for _ in range(n + 1)]
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
indegree[b] += 1
def topology():
result = []
q = []
for i in range(1, n+1):
if indegree[i] == 0:
heapq.heappush(q, i)
while q:
now = heapq.heappop(q)
result.append(now)
graph[now].sort()
for i in graph[now]:
indegree[i] -= 1
if indegree[i] == 0:
heapq.heappush(q, i)
return result
result = topology()
for res in result:
print(res, end=" ")
댓글남기기