M개의 관찰 목록 중에서 앞에서부터 최대로 사용할 수 있는 개수를 찾고, 그 제약을 만족하는 사전순 최소 위상 정렬을 출력한다.
어려움8그래프위상 정렬이분 탐색그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB농부 존이 기르는 소 N마리 (1≤N≤105)에는 늘 그렇듯 1번부터 N번까지 번호가 붙어 있다. 소들은 발굽에 시간이 남아돌아서, 존이 아침마다 젖을 짜는 순서를 두고 복잡한 서열을 만들어 놓았다.
존은 몇 주 동안 소를 관찰해 서열에 관한 기록 M개 (1≤M≤50000)를 남겼다. 기록 하나는 소 몇 마리를 나열한 순서 있는 목록이고, 목록에 적힌 순서 그대로 젖을 짜야 한다는 뜻이다. 예를 들어 기록이 2, 5, 1이면 존은 2번 소의 젖을 5번 소보다 먼저 짜야 하고, 5번 소의 젖을 1번 소보다 먼저 짜야 한다.
기록에는 우선순위가 있다. 존은 앞에서부터 X개의 기록을 모두 지키는 젖 짜기 순서를 만들면서 X를 최대로 하려고 한다. 앞의 X개 기록을 지키는 순서가 여러 개라면, 번호가 작은 소가 번호가 큰 소보다 서열이 높다는 오랜 전통에 따라 번호가 작은 소부터 젖을 짠다. 즉 조건을 만족하는 순서 중 사전순으로 가장 작은 것을 고른다. 순서 x가 순서 y보다 사전순으로 작다는 것은, 어떤 j가 있어서 i<j인 모든 i에 대해 xi=yi이고 xj<yj라는 뜻이다.
존이 소젖을 짜야 하는 가장 좋은 순서를 구하라.
첫째 줄에 N과 M이 주어진다. 이어지는 M개의 줄은 기록을 하나씩 나타낸다. i+1번째 줄은 i번째 기록을 나타내며, 그 기록에 적힌 소의 수 mi가 먼저 오고 그 뒤에 소 번호 mi개가 기록된 순서대로 주어진다. mi의 합은 최대 200000이다.
1부터 N까지의 순열을 이루는 정수 N개를 공백으로 구분해 출력한다. 이 순열이 존이 젖을 짜야 하는 순서다.
첫 번째 예제에서 존은 소 네 마리를 기른다. 첫 번째 기록은 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이다.