첫 번째 줄에 학생 수 N과 줄 세우기 조건 개수 M 입력
2번째 줄부터 M+1번째 줄까지 줄 세우기 조건 입력
줄 세우기 조건을 만족하는 모든 경우 중 1가지를 출력
줄 세우기 문제이기 때문에 사이클이 존재하지 않는다. 따라서 위상 정렬로 문제를 풀이
deg = {stu:[[], 0] for stu in range(1, N+1)}
ans = []
visited = [False for _ in range(N)]
q = deque()
for _ in range(M):
A, B = map(int, sys.stdin.readline().split())
deg[A][0].append(B)
visited[A-1] = True
deg[B][1] += 1
for key in deg.keys():
if deg[key][1] == 0 and visited[key-1]: q.append(key)
else: visited[key-1] = False
while q:
key = q.popleft()
ans.append(key)
visited[key-1] = True
for elem in deg[key][0]:
if deg[elem][1] > 0: deg[elem][1] -= 1
if deg[elem][1] == 0 and not visited[elem-1]:
q.append(elem)
visited[elem-1] = True
deg[key][0] = []
if len(ans) < N:
for stu in range(N):
if not visited[stu]: ans.append(stu+1)