문제
https://www.acmicpc.net/problem/2252
N명의 학생들을 키 순서대로 줄을 세우려고 한다. 각 학생의 키를 직접 재서 정렬하면 간단하겠지만, 마땅한 방법이 없어서 두 학생의 키를 비교하는 방법을 사용하기로 하였다. 그나마도 모든 학생들을 다 비교해 본 것이 아니고, 일부 학생들의 키만을 비교해 보았다.
일부 학생들의 키를 비교한 결과가 주어졌을 때, 줄을 세우는 프로그램을 작성하시오.
문제풀이
from collections import deque
n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
lst = [0] * (n+1) # 진입 차수 리스트
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
lst[b] += 1
# 큐 생성
queue = deque()
for i in range(1, n+1):
if lst[i] == 0:
queue.append(i)
answer = []
while queue :
now = queue.popleft()
answer.append(now)
for i in graph[now]:
lst[i] -= 1
if lst[i] == 0 :
queue.append(i)
for a in answer:
print(a, end=' ')
'ALGORITHM > Algorithm 문제풀이' 카테고리의 다른 글
[문제풀이] 백준 1922번 네트워크 연결 (0) | 2022.03.19 |
---|---|
[문제풀이] 백준 1976번 여행가자 (0) | 2022.03.19 |
[문제풀이] 백준 1932번 정수 삼각형 (0) | 2022.02.19 |
[문제풀이] 백준 2579번 계단 오르기 (0) | 2022.02.19 |
[문제풀이] 백준 1463번 1로 만들기 (0) | 2022.02.19 |