AT_soundhound2018_summer_final_d Propagating Edges
题目描述
给定一个有 $N$ 个顶点、$0$ 条边的无向图。请处理 $Q$ 个如下类型的查询:
- add 查询($type = 1, u, v$):如果 $u$ 和 $v$ 之间没有边,则在 $u$ 和 $v$ 之间添加一条边。
- complete 查询($type = 2, u, v = 0$):对于所有顶点对 $a, b$,如果 $u, a, b$ 三者连通,且 $a, b$ 之间没有边,则在 $a, b$ 之间添加一条边。
- check 查询($type = 3, u, v$):给定 $u, v$,如果 $u$ 和 $v$ 之间直接有边,则输出 `Yes`,否则输出 `No`。
输入格式
输入以如下格式从标准输入给出。
> $N$ $Q$
> $type_1$ $u_1$ $v_1$
> $type_2$ $u_2$ $v_2$
> $\vdots$
> $type_Q$ $u_Q$ $v_Q$
输出格式
对于每个 check 查询,请输出 `Yes` 或 `No`。
说明/提示
### 限制条件
- $2 \leq N \leq 100,\!000$
- $1 \leq Q \leq 200,\!000$
- $type_i = 1, 2, 3$
- $1 \leq u_i \leq N$
- 对于 add 和 check 查询,$1 \leq v_i \leq N$ 且 $u_i \neq v_i$
- 对于 complete 查询,$v_i = 0$
- 输入的所有值均为整数
### 样例说明 1
在第 $1$、$2$ 个查询中,分别在 $(1, 2)$、$(2, 3)$ 之间添加了边。然后,在第 $5$ 个查询中,在 $(1, 3)$ 之间添加了边。
由 ChatGPT 4.1 翻译