[USACO18OPEN] Milking Order G

题目描述

Farmer John 的 $N$ 头奶牛($1 \leq N \leq 10^5$),编号为 $1 \ldots N$,最近闲得发慌。因此,她们发展了一个与 Farmer John 每天早上为她们挤牛奶时的排队顺序相关的复杂社会阶层。 经过若干周的研究,Farmer John 对他的奶牛的社会结构总计进行了 $M$ 次观察($1 \leq M \leq 50,000$)。每个观察结果都是某些奶牛的一个有序序列,表示这些奶牛应该按照序列中的顺序进行挤奶。例如,如果 Farmer John 的一次观察结果是序列 $2$、$5$、$1$,那么 Farmer John 应该在给奶牛 $5$ 挤奶之前的某个时刻给奶牛 $2$ 挤奶,并在给奶牛 $1$ 挤奶之前的某个时刻给奶牛 $5$ 挤奶。 Farmer John 的观察结果是按优先级排列的,因此他的目标是最大化 $X$ 的值,使得他的挤奶顺序能够符合前 $X$ 个观察结果描述的状态。当多种挤奶顺序都能符合前 $X$ 个状态时,Farmer John 遵循一个长期以来的传统——编号较小的奶牛的地位高于编号较大的奶牛,因此他会最先给编号最小的奶牛挤奶。更正式地说,如果有多个挤奶顺序符合这些状态,Farmer John 会采用字典序最小的那一个。挤奶顺序 $x$ 的字典序比挤奶顺序 $y$ 小,如果对于某个 $j$,$x_i = y_i$ 对所有 $i < j$ 成立,并且 $x_j < y_j$(即这两个挤奶顺序到某个位置之前完全相同,而在该位置上 $x$ 比 $y$ 小)。 请帮助 Farmer John 确定给奶牛挤奶的最佳顺序。

输入输出格式

输入格式


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

输出格式


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

输入输出样例

输入样例 #1

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

输出样例 #1

1 4 2 3

说明

在这个例子中,Farmer John 有四头奶牛,他的挤奶顺序应该满足以下规则:奶牛 $1$ 在奶牛 $2$ 之前、奶牛 $2$ 在奶牛 $3$ 之前(第一个观察结果),奶牛 $4$ 在奶牛 $2$ 之前(第二个观察结果),奶牛 $3$ 在奶牛 $4$ 之前、奶牛 $4$ 在奶牛 $1$ 之前(第三个观察结果)。前两个观察结果可以同时被满足,但 Farmer John 不能同时满足所有规则,因为这会要求奶牛 $1$ 在奶牛 $3$ 之前,同时奶牛 $3$ 在奶牛 $1$ 之前。 这意味着总共有两种可能的挤奶顺序:$1\ 4\ 2\ 3$ 和 $4\ 1\ 2\ 3$,第一种是字典序较小的。 题目来源:Jay Leeds