社区讨论
翻译
CF117ETree or not Tree参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mi6nnjpq
- 此快照首次捕获于
- 2025/11/20 07:50 4 个月前
- 此快照最后确认于
- 2025/11/20 07:50 4 个月前
G是一张由n个点和n条边组成的无向图。G中没有自环和重边。每条边有两种状态“开”和“关”。一开始,所有的边都是“关”着的。
现在有m个操作(v,u),表示将从v到u的最短路上的边改变状态(如果状态为“开”则变成“关”,反之,变成“开”)。如果v到u存在多条最短路,则我们选取点序列字典序最小的那一条。
比如,将所有从v到u的路径上的点表示成序列为 v,v1,v2,...,u 。那么我们从中取字典序最小的那一条。
在每一次操作后,你需要计算在图中由所有点和状态为“开”的边所组成图的连通块的数目。
样例解释:
在图中处于“开”状态的边我们用蓝色高亮表示。
在没有进行任何操作前,所有的边都是“关”,也就是说,一开始有5个连通块。

下图是执行了操作v=5,u=4后的图。如果我们关心“开”的边,可以看到有3个连通块。

然后执行操作v=1,u=5后,如下图。同样如果我们关心“开”的边,可以看到有3个连通块。

两个长度为k的点序列比较方法如下。
存在两个序列x,y,长度都是k。
如果存在i(1≤i≤k)和任意j(1≤j<i)使得 xi<yi 并且 xj=yj ,那么我们就说x比y小。
Input
单组测试数据
第一行有两个整数,n和m(3≤n≤10^5,1≤m≤10^5).
接下来的n行,
每行有两个整数a,b(1≤a,b≤n)表示a到b有边相连。
再接下来有m行,
每行有两个整数v,u(1≤v,u≤n)表示一次操作,即要变化的路径的起点和终点。
所给定的图是连通的,里面没有自环,也没有重边。
Output
有m行,每行代表一次操作后,连通块数目。
回复
共 3 条回复,欢迎继续交流。
正在加载回复...