#1637. [USACO18OPEN] Milking Order G

[USACO18OPEN] Milking Order G

题目描述

Farmer John的 NN 头奶牛(1N1051 \leq N \leq 10^5),仍然编号为 1N1 \ldots N,正好闲得发慌。因此,她们发展了一个与 Farmer John 每天早上为她们挤牛奶的时候的排队顺序相关的复杂的社会阶层。

经过若干周的研究,Farmer John 对他的奶牛的社会结构总计进行了 MM 次观察(1M50,0001 \leq M \leq 50,000)。每个观察结果都是他的某些奶牛的一个有序序列,表示这些奶牛应该以与她们在序列中出现的顺序相同的顺序进行挤奶。比方说,如果 Farmer John 的一次观察结果是序列 2、5、1,Farmer John 应该在给奶牛 55 挤奶之前的某个时刻给奶牛 22 挤奶,在给奶牛 11 挤奶之前的某个时刻给奶牛 55 挤奶。

Farmer John 的观察结果是按优先级排列的,所以他的目标是最大化 XX 的值,使得他的挤奶顺序能够符合前 XX 个观察结果描述的状态。当多种挤奶顺序都能符合前 XX 个状态时,Farmer John 相信一个长期以来的传统——编号较小的奶牛的地位高于编号较大的奶牛,所以他会最先给编号最小的奶牛挤奶。更加正式地说,如果有多个挤奶顺序符合这些状态,Farmer John 会采用字典序最小的那一个。挤奶顺序 xx 的字典序比挤奶顺序 yy 要小,如果对于某个 jjxi=yix_i = y_i 对所有 i<ji < j 成立,并且 xj<yjx_j < y_j(也就是说,这两个挤奶顺序到某个位置之前都是完全相同的,在这个位置上xxyy要小)。

请帮助 Farmer John 求出为奶牛挤奶的最佳顺序。

输入格式

第一行包含 NNMM。接下来的 MM 行,每行描述了一个观察结果。第 i+1i+1 行描述了观察结果 ii,第一个数是观察结果中的奶牛数量 mim_i,后面是一列 mim_i 个整数,给出这次观察中奶牛的顺序。所有 mim_i 的和至多为 200,000200,000

输出格式

输出 NN 个空格分隔的整数,给出一个 1N1 \ldots N 的排列,为 Farmer John 给他的奶牛们挤奶应该采用的的顺序。

4 3
3 1 2 3
2 4 2
3 3 4 1
1 4 2 3

提示

这里,Farmer John 有四头奶牛,他的挤奶顺序应该是奶牛 11 在奶牛 22 之前、奶牛 22 在奶牛 33 之前(第一个观察结果),奶牛 44 在奶牛 22 之前(第二个观察结果),奶牛 33 在奶牛 44 之前、奶牛 44 在奶牛 11 之前(第三个观察结果)。前两个观察结果可以同时被满足,但是 Farmer John 不能同时满足所有的规则,因为这样的话会要求奶牛 11 在奶牛 33 之前,同时奶牛 33 在奶牛 11 之前。

这意味着总共有两种可能的挤奶顺序:1 4 2 34 1 2 3,第一种是字典序较小的。