CF1559D2.Mocha and Diana (Hard Version)
省选/NOI-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
This is the hard version of the problem. The only difference between the two versions is the constraint on n. You can make hacks only if all versions of the problem are solved.
A forest is an undirected graph without cycles (not necessarily connected).
Mocha and Diana are friends in Zhijiang, both of them have a forest with nodes numbered from 1 to n, and they would like to add edges to their forests such that:
- After adding edges, both of their graphs are still forests.
- They add the same edges. That is, if an edge (u,v) is added to Mocha's forest, then an edge (u,v) is added to Diana's forest, and vice versa.
Mocha and Diana want to know the maximum number of edges they can add, and which edges to add.
这是该问题的困难版本。两个版本的唯一区别在于对 n 的约束条件。只有当该问题的所有版本均被解决时,才允许进行 hack。
森林是指无环的无向图(不一定是连通的)。
在浙江,Mocha 和 Diana 是朋友。她们各自拥有一个节点编号为 1 到 n 的森林。她们希望向各自的森林中添加若干条边,使得:
- 添加边之后,她们各自的图仍均为森林;
- 她们添加完全相同的边。即:若边 (u,v) 被添加到 Mocha 的森林中,则边 (u,v) 也必须被添加到 Diana 的森林中,反之亦然。
Mocha 和 Diana 想知道:她们最多能添加多少条边?以及具体应添加哪些边?
输入格式
The first line contains three integers n, m1 and m2 (1≤n≤105, 0≤m1,m2<n) — the number of nodes and the number of initial edges in Mocha's forest and Diana's forest.
Each of the next m1 lines contains two integers u and v (1≤u,v≤n, u=v) — the edges in Mocha's forest.
Each of the next m2 lines contains two integers u and v (1≤u,v≤n, u=v) — the edges in Diana's forest.
第一行包含三个整数 n、m1 和 m2(1≤n≤105,0≤m1,m2<n),分别表示节点数量、Mocha 的森林中初始边的数量以及 Diana 的森林中初始边的数量。
接下来的 m1 行每行包含两个整数 u 和 v(1≤u,v≤n,u=v),表示 Mocha 的森林中的边。
再接下来的 m2 行每行包含两个整数 u 和 v(1≤u,v≤n,u=v),表示 Diana 的森林中的边。
输出格式
The first line contains only one integer h, the maximum number of edges Mocha and Diana can add.
Each of the next h lines contains two integers u and v (1≤u,v≤n, u=v) — the edge you add each time.
If there are multiple correct answers, you can print any one of them.
第一行仅包含一个整数 h,表示 Mocha 和 Diana 最多可以添加的边数。
接下来的 h 行中,每行包含两个整数 u 和 v(1≤u,v≤n,且 u=v),表示每次添加的边。
若存在多个正确答案,输出任意一个即可。
输入输出样例
输入#1
3 2 2 1 2 2 3 1 2 1 3
输出#1
0
输入#2
5 3 2 5 4 2 1 4 3 4 3 1 4
输出#2
1 2 4
输入#3
8 1 2 1 7 2 6 1 5
输出#3
5 5 2 2 3 3 4 4 7 6 8
说明/提示
In the first example, we cannot add any edge.
In the second example, the initial forests are as follows.

We can add an edge (2,4).

在第一个例子中,我们无法添加任何边。
在第二个例子中,初始的森林如下所示。

我们可以添加一条边 (2,4)。

输入解题思路,AI测评打分。不知道怎么写?