题库练习 Milking Order G
← 上一题 下一题 →

A2645 | Milking Order G

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

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
C++ 编辑器
输入
输出