AT_abc183_f [ABC183F] Confluence

题目描述

有 $N$ 名学生准备上学。第 $i$ 名学生属于班级 $C_i$。 每位学生从自己家出发,途中会不断与其他学生汇合,一起前往学校。已经汇合的学生不会再分开。 现在给出 $Q$ 个查询,请按顺序处理。查询有两种类型,输入格式和内容如下: - `1 a b` :将包含学生 $a$ 的集体与包含学生 $b$ 的集体合并(如果已经在同一集体中则什么都不做)。 - `2 x y` :询问当前与学生 $x$ 已经汇合在一起的所有学生(包括 $x$ 本人)中,属于班级 $y$ 的学生有多少人。

输入格式

输入通过标准输入给出,格式如下: > $N$ $Q$ $C_1$ $\ldots$ $C_N$ > $Query_1$ > $\vdots$ > $Query_Q$

输出格式

对于每个 `2 x y` 类型的查询,按顺序每行输出一个答案。

说明/提示

## 限制条件 - $1 \leq N \leq 2 \times 10^5$ - $1 \leq Q \leq 2 \times 10^5$ - $1 \leq C_i, a, b, x, y \leq N$ - 对于 `1 a b` 查询,$a \neq b$ - 所有输入均为整数 ## 样例解释 1 在第 $3$ 个查询时,学生 $1$ 已经与学生 $2,5$ 汇合。学生 $1,2,5$ 中属于班级 $1$ 的有 $2$ 人。在第 $5$ 个查询时,学生 $3$ 已经与学生 $4$ 汇合。学生 $3,4$ 中属于班级 $4$ 的有 $0$ 人。 ## 样例解释 2 对于已经属于同一集体的学生,也可能会给出 `1 a b` 类型的查询。 由 ChatGPT 4.1 翻译