코드
from collections import deque
import sys
input = sys.stdin.readline
n,m = map(int, input().split())
graph = [[] for _ in range(n+1)]
indegree = [0]*(n+1)
for i in range(1,m+1):
lst = [*map(int, input().split())]
for j in range(1,lst[0]):
graph[lst[j]].append(lst[j+1])
indegree[lst[j+1]] += 1
def topol_sort():
queue = deque()
sequence = []
for i in range(1, n+1):
if indegree[i] == 0:
queue.append(i)
while queue:
popnum = queue.popleft()
sequence.append(popnum)
for j in graph[popnum]:
indegree[j] -= 1
if indegree[j] == 0:
queue.append(j)
return sequence
stagesequence = topol_sort()
print(0) if n!= len(stagesequence) else print(*stagesequence, sep='\n')
'백준' 카테고리의 다른 글
[백준] 1516번 게임 개발 파이썬 코드 (0) | 2024.01.16 |
---|---|
[백준] 2056번 작업 파이썬 코드 (0) | 2024.01.05 |
[백준] 1766번 문제집 파이썬 코드 (0) | 2024.01.05 |
[백준] 2637번 장난감 조립 파이썬 코드 (0) | 2024.01.04 |
[백준] 14567번 선수과목 파이썬 코드 (0) | 2024.01.04 |
코드
from collections import deque
import sys
input = sys.stdin.readline
n,m = map(int, input().split())
graph = [[] for _ in range(n+1)]
indegree = [0]*(n+1)
for i in range(1,m+1):
lst = [*map(int, input().split())]
for j in range(1,lst[0]):
graph[lst[j]].append(lst[j+1])
indegree[lst[j+1]] += 1
def topol_sort():
queue = deque()
sequence = []
for i in range(1, n+1):
if indegree[i] == 0:
queue.append(i)
while queue:
popnum = queue.popleft()
sequence.append(popnum)
for j in graph[popnum]:
indegree[j] -= 1
if indegree[j] == 0:
queue.append(j)
return sequence
stagesequence = topol_sort()
print(0) if n!= len(stagesequence) else print(*stagesequence, sep='\n')
'백준' 카테고리의 다른 글
[백준] 1516번 게임 개발 파이썬 코드 (0) | 2024.01.16 |
---|---|
[백준] 2056번 작업 파이썬 코드 (0) | 2024.01.05 |
[백준] 1766번 문제집 파이썬 코드 (0) | 2024.01.05 |
[백준] 2637번 장난감 조립 파이썬 코드 (0) | 2024.01.04 |
[백준] 14567번 선수과목 파이썬 코드 (0) | 2024.01.04 |