#ABC225D. 玩具火车

玩具火车

玩具火车

题目描述

高桥君正在玩玩具火车,将它们连接或断开。

NN 节玩具火车车厢,车厢编号为:1 号车厢、2 号车厢、……、NN 号车厢。

初始时,所有车厢都是分离的。

接下来给出 QQ 个查询,请按给出的顺序依次处理。查询共有三种类型,如下所示。

1 x y:将 yy 号车厢的车头连接到 xx 号车厢的车尾。

保证满足:

  • xyx \neq y
  • 执行该查询前,xx 号车厢的车尾没有连接任何车厢
  • 执行该查询前,yy 号车厢的车头没有连接任何车厢
  • 执行该查询前,xx 号车厢和 yy 号车厢属于不同的连通分量

2 x y:将 yy 号车厢的车头从 xx 号车厢的车尾断开。

保证满足:

  • xyx \neq y
  • 执行该查询前,yy 号车厢的车头直接连接在 xx 号车厢的车尾上

3 x:按从前到后的顺序,输出包含 xx 号车厢的连通分量中各车厢的编号。

输入格式

输入按以下格式从标准输入给出:

NN QQ
query1\mathrm{query}_1
query2\mathrm{query}_2
\vdots
queryQ\mathrm{query}_Q

ii 个查询 queryi\mathrm{query}_i 以表示查询类型的整数 cic_i(112233)开头;如果 ci=1c_i = 122,后面跟着 xxyy;如果 ci=3c_i = 3,后面只跟着 xx

简而言之,每个查询是以下三种格式之一:

11 xx yy

22 xx yy

33 xx

输出格式

如果某个 ci=3c_i = 3 的查询要求输出 j1,j2,,jMj_1, j_2, \ldots, j_M,则输出下面这样的一行:

MM j1j_1 j2j_2 \ldots jMj_M

输出应包含 qq 行,其中 qqci=3c_i = 3 的查询个数。

kk 行(1kq1 \le k \le q)应输出对第 kk 个此类查询的响应。

样例

7 14
1 6 3
1 4 1
1 5 2
1 2 7
1 3 5
3 2
3 4
3 6
2 3 5
2 4 1
1 1 5
3 2
3 4
3 6
5 6 3 5 2 7
2 4 1
5 6 3 5 2 7
4 1 5 2 7
1 4
2 6 3

下图显示了处理前 55 个查询时车厢的状态。

例如,车厢 22 与车厢 3,5,6,73, 5, 6, 7 属于同一连通分量,该分量与包含车厢 1,41, 4 的连通分量不同。

下图显示了处理前 1111 个查询时车厢的状态。

数据范围

  • 2N1052 \le N \le 10^5
  • 1Q1051 \le Q \le 10^5
  • 1xN1 \le x \le N
  • 1yN1 \le y \le N
  • 输入中的所有值均为整数。
  • 所有查询都满足题目描述中列出的条件。
  • 所有 3x3 x 格式的查询要求输出的车厢编号总数至多为 10610^6
难度 普及+/提高-
通过率
尝试 0
已通过 0
ID
2299
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签