#P13956. [ICPC 2023 Nanjing R] 等价重写

    ID: 15723 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>图论2023Special Judge拓扑排序ICPC南京

[ICPC 2023 Nanjing R] 等价重写

题目描述

有一个长度为 mm 的序列 AA,所有元素均为 00。接下来我们将依次对 AA 执行 nn 个操作。第 ii 个操作可记为 pip_i 个不同的整数 bi,1,bi,2,,bi,pib_{i, 1}, b_{i, 2}, \cdots, b_{i, p_i},表示对于所有 1jpi1 \le j \le p_i,我们将把序列中第 bi,jb_{i, j} 个元素的值改为 ii。令 RR 表示所有操作后的结果序列。

我们现在要求您重新排列这些操作,但保持最终的结果不变。更正式地,令 q1,q2,,qnq_1, q_2, \cdots, q_n 表示一个 nn 的排列,且与 1,2,,n1, 2, \cdots, n 不同。您将会依次对序列 AA 执行第 q1q_1q2q_2,...,qnq_n 个操作,最终的结果序列必须和 RR 相同。您的任务就是找到这样的排列,或表明其不存在。

请回忆:一个 nn 的排列是一个长度为 nn 的序列,每个从 11nn(含两端)的整数在其中都恰好出现一次。令 x1,x2,,xnx_1, x_2, \cdots, x_ny1,y2,,yny_1, y_2, \cdots, y_n 为两个 nn 的排列,我们称它们是不同的,若存在整数 kk 满足 1kn1 \le k \le nxkykx_k \ne y_k

输入格式

有多组测试数据。第一行输入一个整数 TT 表示测试数据组数,对于每组测试数据:

第一行输入两个整数 nnmm1n,m1051 \leq n, m \leq 10^5)表示操作的数量和序列的长度。

对于接下来 nn 行,第 ii 行首先输入一个整数 pip_i1pim1 \le p_i \le m)表示第 ii 个操作修改的元素数量。接下来输入 pip_i 个不同的整数 bi,1,bi,2,,bi,pib_{i,1}, b_{i,2}, \cdots, b_{i,p_i}1bi,jm1 \le b_{i,j} \le m)表示被修改的元素下标。

保证所有数据 (n+m)(n + m) 之和不超过 2×1062 \times 10^6,且所有数据 pip_i 之和不超过 10610^6

输出格式

对于每组测试数据:

如果存在所求的排列,首先输出一行 Yes\texttt{Yes}。接下来在第二行输出 nn 个由单个空格分隔的整数 q1,q2,,qnq_1, q_2, \cdots, q_n 表示答案。如果有多种合法答案,您可以输出任意一种。

如果不存在所求的排列,仅需输出一行 No\texttt{No}

请不要在行末输出多余空格,否则您的答案可能会被认为是错误的!

3
3 6
3 3 1 5
2 5 3
2 2 6
2 3
3 1 3 2
2 3 1
1 3
2 2 1
Yes
3 1 2
No
No

提示

对于第一组样例数据,按 {1,2,3}\{1, 2, 3\}{3,1,2}\{3, 1, 2\} 的顺序执行操作,结果序列均为 {1,3,2,0,2,3}\{1, 3, 2, 0, 2, 3\}