P14590 [LNCPC 2025] 计组实验
题目描述
在计算机组成原理实验课程中,老师安排了 $n$ 个实验供同学们选择。
接下来有 $m$ 个事件按照时间顺序依次发生,每个事件形如下面两种之一:
- $1\ i\ x$:一个学号为 $x$ 的学生选择了第 $i$ 个实验。如果他是第 $j$ 个选择这个实验的学生,那么他在这个实验的序号是 $j$。
- $2\ i_1 \ j_1 \ i_2\ j_2$:第 $i_1$ 个实验的序号为 $j_1$ 的学生与第 $i_2$ 个实验的序号为 $j_2$ 的学生交换了实验。
更详细地,如果此前第 $i_1$ 个实验的序号为 $j_1$ 的学生的学号是 $x_1$,第 $i_2$ 个实验的序号为 $j_2$ 的学生的学号是 $x_2$,那么此时第 $i_1$ 个实验的序号为 $j_1$ 的学生的学号是 $x_2$,第 $i_2$ 个实验的序号为 $j_2$ 的学生的学号是 $x_1$。
这 $m$ 个事件发生后,老师要打印课程名单。最后请您对于每个实验输出学生数量,以及按照序号从小到大的顺序依次输出对应学生的学号。
输入格式
第一行给定两个整数 $n,m(1\le n,m\le 3\times 10^5)$,分别表示实验个数和事件个数。
接下来 $m$ 行,每行按照下面两种格式之一,按照时间顺序依次给定每个事件:
- $1\ i\ x$:一个学号为 $x$ 的学生选择了第 $i$ 个实验。保证给定的均为整数,$1\le i\le n,10^{8}\le x
输出格式
输出共 $n$ 行,其中第 $i$ 行首先输出选择了第 $i$ 个实验的学生的数量,然后如果数量不为零,那么按照序号从小到大的顺序依次输出第 $i$ 个实验对应学生的学号。一行相邻两个整数之间用一个空格隔开。
说明/提示
对于第一个样例,下面用表格表示在每个事件发生后的课程名单情况:
- $1\ 1\ 250000001$:
| |序号 $1$ |序号 $2$|
|:-------:|:--------:|:----:|
|第 $1$ 个实验|$250000001$| |
|第 $2$ 个实验| | |
|第 $3$ 个实验| | |
- $1\ 3\ 250000006$:
| |序号 $1$ |序号 $2$|
|:-------:|:--------:|:----:|
|第 $1$ 个实验|$250000001$| |
|第 $2$ 个实验| | |
|第 $3$ 个实验|$250000006$| |
- $2\ 1\ 1\ 3\ 1$:
| |序号 $1$ |序号 $2$|
|:-------:|:--------:|:----:|
|第 $1$ 个实验|$250000006$| |
|第 $2$ 个实验| | |
|第 $3$ 个实验|$250000001$| |
- $1\ 1\ 250000003$:
| |序号 $1$ |序号 $2$|
|:-------:|:--------:|:----:|
|第 $1$ 个实验|$250000006$|$250000003$|
|第 $2$ 个实验| | |
|第 $3$ 个实验|$250000001$| |