https://www.acmicpc.net/problem/2252
2252번: 줄 세우기
첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의
www.acmicpc.net
from collections import deque
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
q = deque()
indegrees = [0] * (n+1)
graph = [[] for _ in range(n+1)]
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
indegrees[b] += 1
for i in range(1, n+1):
if indegrees[i] == 0:
q.append(i)
result = []
while q:
cur = q.popleft()
result.append(cur)
for i in graph[cur]:
indegrees[i] -= 1
if indegrees[i] == 0:
q.append(i)
for v in result:
print(v, end=' ')
https://www.youtube.com/watch?v=xeSz3pROPS8&t=316s
'코딩테스트 준비 > [백준]' 카테고리의 다른 글
[백준] boj 1181 단어정렬 (0) | 2021.12.22 |
---|---|
[백준] LCA 2 11438 (0) | 2021.12.21 |
[백준] 11657 벨만포드 - 파이썬 (0) | 2021.12.19 |
[백준] LCA(Lowest Common Ancestor) 11437 최소 공통 조상 (0) | 2021.12.18 |
[백준] 2042 - 구간 합 구하기 / 바이너리 인덱스 트리 (0) | 2021.12.16 |