CF2205C Simons and Posting Blogs

题目描述

这人生就像一档电视节目,我们随着剧情推进而被卷动。 —— SHUN,[TRAP](https://open.spotify.com/track/4lfS48CaivAm4QaimqbAPv) 有 $n$ 个博客。第 $i$ 个博客按顺序提及了 $l_i$ 个用户,记为一个数组 $a_i = [a_{i,1},a_{i,2},\ldots,a_{i,l_i}]$。 你将依次发布所有 $n$ 个博客。我们维护一个序列 $Q$,用于描述你最近提及过的用户列表。你需要恰好进行 $n$ 次如下操作: - 选择一个尚未发布的博客 $i$($1\leq i\leq n$),然后发布它。对于该博客中每个 $1\leq j\leq l_i$,按照顺序进行以下操作: - 如果 $a_{i,j}$ 已经在 $Q$ 中,則将 $a_{i,j}$ 移动到 $Q$ 的开头。 - 否则,将 $a_{i,j}$ 插入到 $Q$ 的开头。 请你求出,在所有发布顺序中,最终得到的 $Q$ 的字典序最小值$^{\ast}$。 $^{\ast}$ 对于数组 $x$ 和 $y$,如果满足以下条件之一,则称 $x$ 的字典序小于 $y$: - $x$ 是 $y$ 的前缀,且 $x\ne y$; - 在第一个不相等的位置,$x$ 的元素小于 $y$ 的对应元素。

输入格式

每个测试用例包含多组数据。第一行包含测试用例个数 $t$($1 \leq t \leq 1000$)。 每组数据第一行是一个整数 $n$($1 \leq n \leq 3000$)——博客数量。 接下来 $n$ 行,第 $i$ 行以一个正整数 $l_i$($1 \leq l_i \leq 3000$)开头,表示第 $i$ 个博客提及的用户数。随后跟着 $l_i$ 个整数 $a_{i,1},a_{i,2},\ldots,a_{i,l_i}$($1\leq a_{i,j} \leq 10^6$),表示该博客中提及的用户列表。 保证所有测试用例的 $n$ 之和不超过 $3000$。记 $\sum\limits_{i=1}^n l_i$ 为 $L$,保证所有测试用例的 $L$ 之和不超过 $3000$。

输出格式

记 $m$ 为所有博客中被提及至少一次的用户数量。对于每个测试用例,输出 $m$ 个整数 $Q_1,Q_2,\ldots,Q_m$,表示字典序最小的 $Q$。

说明/提示

在第一个测试用例中,可以按如下方式发布博客: - 首先发布第一个博客,$Q$ 变为 $[6,4,3,2,1]$。 - 再发布第三个博客,$Q$ 变为 $[3,2,9,1,6,4]$。 - 最后发布第二个博客,$Q$ 变为 $[1,5,2,3,9,6,4]$。 也可以选择另一种发布顺序: - 首先发布第三个博客,$Q$ 变为 $[3,2,9,1]$。 - 再发布第一个博客,$Q$ 变为 $[6,4,3,2,1,9]$。 - 最后发布第二个博客,$Q$ 变为 $[1,5,2,6,4,3,9]$。 可以看出 $[1,5,2,3,9,6,4]$ 比另一种方案更小。如果第二个博客不在最后一个发布,则数组第一个元素无法为 $1$,所以 $[1,5,2,3,9,6,4]$ 是字典序最小的 $Q$。 在第二个测试用例中,可以按如下顺序发布: - 先发第一个博客,$Q = [6,1]$。 - 再发第二个博客,$Q$ 保持为 $[6,1]$。 在第三个测试用例中,只有一个博客可选,$Q = [1,6]$。 由 ChatGPT 5 翻译