codeforces#P2069F. Graph Inclusion
Graph Inclusion
以下题面由 AI 翻译。
问题描述
无向图的连通分量定义为:
- 对于该分量中的每一对顶点 $(u, v)$,存在一条路径将顶点 $u$ 和 $v$ 连接起来;
- 不存在分量外的顶点与分量内的任意顶点相连。
例如,下图所示的图包含三个连通分量:$\{1, 3, 7, 8\}$、$\{2\}$ 和 $\{4, 5, 6\}$。

我们称图 $A$ 包含图 $B$,如果图 $B$ 的每一个连通分量都是图 $A$ 某个连通分量的子集。
给定两个包含 $n$ 个顶点(编号从 $1$ 到 $n$)的图 $A$ 和 $B$,最初这两个图中没有任何边。你需要处理两种类型的查询:
- 向其中一个图添加一条边;
- 向其中一个图删除一条边。
在每次查询之后,计算并输出为了使图 $A$ 包含图 $B$ 需要添加的最小边数,并将结果输出。注意,这里只是计算需要添加的边数,而不实际添加这些边。
第一行包含两个整数 $n$ 和 $q$($2 \le n \le 4 \cdot 10^5$;$1 \le q \le 4 \cdot 10^5$)——顶点数和查询次数。
接下来有 $q$ 行,其中第 $i$ 行描述第 $i$ 次查询。查询的描述以字符 $c_i$(要么是 A,要么是 B)开头——需要向哪个图执行该查询。然后是两个整数 $x_i$ 和 $y_i$($1 \le x_i, y_i \le n$;$x_i \ne y_i$)。如果对应的图中存在边 $(x_i, y_i)$,则删除之;否则,在该图中添加这条边。
对于每次查询,输出一个整数——为了使图 $A$ 包含图 $B$ 需要添加的最小边数。
输入
第一行包含两个整数 $n$ 和 $q$($2 \le n \le 4 \cdot 10^5$;$1 \le q \le 4 \cdot 10^5$)——顶点数和查询次数。
接下来有 $q$ 行,其中第 $i$ 行描述第 $i$ 次查询。查询的描述以字符 $c_i$(要么是 A,要么是 B)开头——需要向哪个图执行该查询。然后是两个整数 $x_i$ 和 $y_i$($1 \le x_i, y_i \le n$;$x_i \ne y_i$)。如果对应的图中存在边 $(x_i, y_i)$,则删除之;否则,在该图中添加这条边。
输出
对于每次查询,输出一个整数——为了使图 $A$ 包含图 $B$ 需要添加的最小边数。