#abc225dL. 习题5.1.3 玩具火车(Play Train)

习题5.1.3 玩具火车(Play Train)

AI翻译,公式、数字等可能存在问题,如果存在问题,请点击上面查看英文版

分数:400分

问题描述

高山正在玩玩具火车,连接和断开它们。

NN辆玩具火车车厢,编号为:Car 11,Car 22\ldots,Car NN

最初,所有的车厢都是分开的。

你将会得到QQ个查询。按照给定的顺序处理它们。查询有三种类型,如下所述。

  • 1 x y:将Car yy的前部连接到Car xx的后部。

保证满足以下条件:

  • xeqyx eq y

  • 在此查询之前,没有火车连接到Car xx的后部;

  • 在此查询之前,没有火车连接到Car yy的前部;

  • 在此查询之前,Car xx和Car yy属于不同的连通分量。

  • 2 x y:将Car yy的前部从Car xx的后部断开。

保证满足以下条件:

  • xeqyx eq y

  • 在此查询之前,Car yy的前部直接连接到Car xx的后部。

  • 3 x:打印属于包含Car xx的连通分量的车厢编号,从前到后

约束条件

  • 2N1052 \leq N \leq 10^5

  • 1Q1051 \leq Q \leq 10^5

  • 1xN1 \leq x \leq N

  • 1leqyN1 leq y \leq N

  • 输入中的所有值都是整数。

  • 所有查询都满足问题描述中的条件。

  • 格式为3 x的查询总共要求打印最多10610^6个车厢编号。


输入

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

NN QQ

query1\mathrm{query}_1

query2\mathrm{query}_2

\vdots

queryQ\mathrm{query}_Q

ii个查询query_i\mathrm{query}\_i以一个整数cic_i112233)开头,表示查询的类型,后面跟着xxyy(如果c_i=1c\_i = 122),以及xx(如果ci=3c_i = 3)。

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

11 xx yy

22 xx yy

33 xx

输出

如果一个查询带有c_i=3c\_i = 3要求打印值j_1,j_2,,j_Mj\_1, j\_2, \ldots, j\_M,则输出以下行:

MM j1j_1 j2j_2 \ldots jMj_M

你的输出应包含qq行,其中qq是查询带有c_i=3c\_i = 3的数量。

kk行(1kq1 \leq k \leq q)应包含对第kk个此类查询的响应。


样本输入1

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


样本输出1

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

下图显示了处理前5个查询时的车厢情况。

例如,Car 22与Cars 3,5,6,73, 5, 6, 7属于同一个连通分量,这与包含Cars 1,41, 4的连通分量不同。

下图显示了处理前11个查询时的车厢情况。