#P16129. [cses2133]Dynamic Connectivity动态连通性
[cses2133]Dynamic Connectivity动态连通性
题目描述
给定一张无向图,图中有 个点和 条边。接下来会发生 个事件,事件有两种类型:
- 在点 与点 之间新建一条边;
- 删除点 与点 之间已有的一条边。
你的任务是:输出每个事件发生后,图中的连通块数量。
注意:还需要先输出第一个事件发生前,初始图中的连通块数量。
输入格式
第一行包含三个整数 ,分别表示点数、初始边数和事件数。
接下来 行,每行包含两个整数 ,表示初始图中存在一条连接点 与点 的无向边。
保证任意两个点之间至多有一条边。
接下来 行,每行形如:
t a b
其中:
- 表示在点 与点 之间新建一条边;
- 表示删除点 与点 之间已有的一条边。
保证:
- 新建边时,点 与点 之间当前不存在边;
- 删除边时,点 与点 之间当前存在边。
输出格式
输出 个整数:
- 第一个整数表示第一个事件发生前,初始图中的连通块数量;
- 接下来 个整数依次表示每个事件发生后,图中的连通块数量。
整数之间用空格分隔。
数据范围
样例输入
5 3 3
1 4
2 3
3 5
1 2 5
2 3 5
1 1 2
样例输出
2 2 2 1
样例解释
初始时有边 ,连通块为:
- ;
- 。
因此初始连通块数量为 。
之后依次处理事件:
- 加入边 ,这两个点本来已经在同一个连通块内,连通块数量仍为 ;
- 删除边 ,由于仍可通过边 连接,连通块数量仍为 ;
- 加入边 ,两个原本不同的连通块被合并,连通块数量变为 。
说明
本题要求处理动态图的连通块数量,边会被动态加入和删除。常见做法包括离线处理、线段树分治加可回滚并查集等。
时间与空间限制
- 时间限制:1.00 s
- 空间限制:512 MB