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$