젖 짜는 순서

M개의 관찰 목록 중에서 앞에서부터 최대로 사용할 수 있는 개수를 찾고, 그 제약을 만족하는 사전순 최소 위상 정렬을 출력한다.

어려움8그래프위상 정렬이분 탐색그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

농부 존이 기르는 소 NN마리 (1N1051 \leq N \leq 10^5)에는 늘 그렇듯 11번부터 NN번까지 번호가 붙어 있다. 소들은 발굽에 시간이 남아돌아서, 존이 아침마다 젖을 짜는 순서를 두고 복잡한 서열을 만들어 놓았다.

존은 몇 주 동안 소를 관찰해 서열에 관한 기록 MM개 (1M500001 \leq M \leq 50\,000)를 남겼다. 기록 하나는 소 몇 마리를 나열한 순서 있는 목록이고, 목록에 적힌 순서 그대로 젖을 짜야 한다는 뜻이다. 예를 들어 기록이 2, 5, 1이면 존은 2번 소의 젖을 5번 소보다 먼저 짜야 하고, 5번 소의 젖을 1번 소보다 먼저 짜야 한다.

기록에는 우선순위가 있다. 존은 앞에서부터 XX개의 기록을 모두 지키는 젖 짜기 순서를 만들면서 XX를 최대로 하려고 한다. 앞의 XX개 기록을 지키는 순서가 여러 개라면, 번호가 작은 소가 번호가 큰 소보다 서열이 높다는 오랜 전통에 따라 번호가 작은 소부터 젖을 짠다. 즉 조건을 만족하는 순서 중 사전순으로 가장 작은 것을 고른다. 순서 xx가 순서 yy보다 사전순으로 작다는 것은, 어떤 jj가 있어서 i<ji < j인 모든 ii에 대해 xi=yix_i = y_i이고 xj<yjx_j < y_j라는 뜻이다.

존이 소젖을 짜야 하는 가장 좋은 순서를 구하라.

입력

첫째 줄에 NNMM이 주어진다. 이어지는 MM개의 줄은 기록을 하나씩 나타낸다. i+1i+1번째 줄은 ii번째 기록을 나타내며, 그 기록에 적힌 소의 수 mim_i가 먼저 오고 그 뒤에 소 번호 mim_i개가 기록된 순서대로 주어진다. mim_i의 합은 최대 200000200\,000이다.

출력

11부터 NN까지의 순열을 이루는 정수 NN개를 공백으로 구분해 출력한다. 이 순열이 존이 젖을 짜야 하는 순서다.

힌트

첫 번째 예제에서 존은 소 네 마리를 기른다. 첫 번째 기록은 1번 소를 2번 소보다, 2번 소를 3번 소보다 먼저 짜라는 뜻이다. 두 번째 기록은 4번 소를 2번 소보다 먼저 짜라는 뜻이고, 세 번째 기록은 3번 소를 4번 소보다, 4번 소를 1번 소보다 먼저 짜라는 뜻이다. 앞의 두 기록은 동시에 지킬 수 있지만, 세 기록을 모두 지키려면 1번 소가 3번 소보다 앞서면서 3번 소가 1번 소보다 앞서야 하므로 불가능하다. 따라서 가능한 순서는 1 4 2 3과 4 1 2 3 두 가지이고, 사전순으로 작은 쪽은 1 4 2 3이다.