CF1559D2 Mocha and Diana (Hard Version)

Description

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.

Input Format

N/A

Output Format

N/A

Explanation/Hint

In the first example, we cannot add any edge. In the second example, the initial forests are as follows. ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1559D2/3b441afdf7fd87635afa8212e7dfecc8d4b6f286.png) We can add an edge $ (2, 4) $ . ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1559D2/98bbd9b512604aa18a1dece7b72cf916b7a8fd6d.png)