반응형
위상정렬 문제
그래프를 인접리스트로 구현
indegree 배열 저장
자료구조 queue 사용
import queue
n, m =input().split()
n = int(n)
m = int(m)
adj = [[] for _ in range(n+1)]
indegree = [0] * (n+1)
Q = queue.Queue()
for _ in range(m):
A, B = input().split()
adj[int(A)].append(int(B))
indegree[int(B)]+=1
for i in range(1,len(indegree)):
if indegree[i] == 0:
Q.put(i)
while not Q.empty():
temp = Q.get()
print(temp, end=' ')
for i in range(len(adj[temp])):
indegree[adj[temp][i]] -=1
if indegree[adj[temp][i]] ==0:
Q.put(adj[temp][i])
반응형
'관심있는 주제 > 알고리즘 문제' 카테고리의 다른 글
백준 알고리즘 1152 python (0) | 2019.04.18 |
---|---|
백준 알고리즘 2577 python (0) | 2019.04.18 |
백준 알고리즘 1110 python (0) | 2019.04.18 |
백준 알고리즘 2839 python (0) | 2019.04.18 |
백준 알고리즘 4673 python (0) | 2019.04.18 |