U373011 合并块

题目背景

还是算法实验课的作业,我花了很长时间去推导,希望能抓到个题解更简单的作为答案上交(借抄作业)

题目描述

刚刚开始的时候,有 $n$ 个块,对于第 $i$ 个块其内部只有一个元素 $i$ 现在有 $m$ 次操作,每次操作都会给出两个元素 $x$ 和 $y$: - 如果 $x$ 和 $y$ 都在同一个块内,不做任何操作 - 否则,将含有元素 $x$ 的块放在含有元素 $y$ 的块的上面并且合并成一块 由于每个块的宽度都是 $1$, 所以只能往上面堆叠,如果将块 $a$ 放在块 $b$ 的上面,则 $a$ 块的元素都在 $b$ 块的上面(注意维护上下顺序哦!) 例如块 $\{1\}$ 和块 $\{2\}$,将块 $\{1\}$ 放在块 $\{2\}$ 上面并且合并成一块后:$\{1, 2\}$ 执行完全部操作后,请按照从上往下的顺序依次输出含有元素 $1$ 的块的所有元素

输入格式

- 第一行输入两个整数分别是 $n$ 和 $m$ - 接下来有 $m$ 行,每行都输入两个整数 $x$ 和 $y$

输出格式

输出只有 $1$ 行,代表从上往下的顺序依次输出含有元素 $1$ 的块的所有元素

说明/提示

- $1 \leq n, m \leq 10 ^ 6$ - $1 \leq x, y \leq n$