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 翻译