728x90
이전 스터디의 기억을 되짚어가며 .... 선수과목이라는 문제를 풀었습니다.
옛날 LeetCode에서의 문제와 거의 유사한 것 같네요.
indegree의 차수를 항상 유의하면서 카운팅을 하면 되겠습니다.
import sys
from collections import deque
input = sys.stdin.readline
N, M = map(int,input().split())
node_ind = [0 for _ in range (0, N+1)]
answer = [1 for _ in range (0, N+1)]
gp = [[] for _ in range (0, N+1)]
for _ in range (0,M):
a, b = map(int,input().split())
gp[a].append(b)
node_ind[b] += 1
deq = deque()
for i in range (1, N+1):
# 해당 학기에 바로 이수할 수 있다느 뜻이므로
if node_ind[i] == 0:
deq.append(i)
while deq:
x = deq.popleft()
for y in gp[x]:
node_ind[y] -= 1
if node_ind[y] == 0:
answer[y] = answer[x] + 1
deq.append(y)
print(*answer[1:])
'코딩' 카테고리의 다른 글
[BOJ, 백준] 25958 예쁜수 Python (1) | 2024.10.15 |
---|---|
[BOJ, 백준] 1036 36진수 Python (1) | 2024.10.07 |
[BOJ, 백준] 24726 미적분학 입문하기 2 Python (0) | 2024.10.04 |
[BOJ, 백준] 27725 지수를 더하자 Python (1) | 2024.09.06 |
[BOJ, 백준] 1916 최소비용 구하기 python (0) | 2024.09.02 |