CF1284F.New Year and Social Network

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Donghyun's new social network service (SNS) contains nn users numbered 1,2,,n1, 2, \ldots, n . Internally, their network is a tree graph, so there are n1n-1 direct connections between each user. Each user can reach every other users by using some sequence of direct connections. From now on, we will denote this primary network as T1T_1 .

To prevent a possible server breakdown, Donghyun created a backup network T2T_2 , which also connects the same nn users via a tree graph. If a system breaks down, exactly one edge eT1e \in T_1 becomes unusable. In this case, Donghyun will protect the edge ee by picking another edge fT2f \in T_2 , and add it to the existing network. This new edge should make the network be connected again.

Donghyun wants to assign a replacement edge fT2f \in T_2 for as many edges eT1e \in T_1 as possible. However, since the backup network T2T_2 is fragile, fT2f \in T_2 can be assigned as the replacement edge for at most one edge in T1T_1 . With this restriction, Donghyun wants to protect as many edges in T1T_1 as possible.

Formally, let E(T)E(T) be an edge set of the tree TT . We consider a bipartite graph with two parts E(T1)E(T_1) and E(T2)E(T_2) . For eE(T1),fE(T2)e \in E(T_1), f \in E(T_2) , there is an edge connecting {e,f}\{e, f\} if and only if graph T1{e}+{f}T_1 - \{e\} + \{f\} is a tree. You should find a maximum matching in this bipartite graph.

输入格式

The first line contains an integer nn ( 2n2500002 \le n \le 250\,000 ), the number of users.

In the next n1n-1 lines, two integers aia_i , bib_i ( 1ai,bin1 \le a_i, b_i \le n ) are given. Those two numbers denote the indices of the vertices connected by the corresponding edge in T1T_1 .

In the next n1n-1 lines, two integers cic_i , did_i ( 1ci,din1 \le c_i, d_i \le n ) are given. Those two numbers denote the indices of the vertices connected by the corresponding edge in T2T_2 .

It is guaranteed that both edge sets form a tree of size nn .

输出格式

In the first line, print the number mm ( 0m<n0 \leq m < n ), the maximum number of edges that can be protected.

In the next mm lines, print four integers ai,bi,ci,dia_i, b_i, c_i, d_i . Those four numbers denote that the edge (ai,bi)(a_i, b_i) in T1T_1 is will be replaced with an edge (ci,di)(c_i, d_i) in T2T_2 .

All printed edges should belong to their respective network, and they should link to distinct edges in their respective network. If one removes an edge (ai,bi)(a_i, b_i) from T1T_1 and adds edge (ci,di)(c_i, d_i) from T2T_2 , the network should remain connected. The order of printing the edges or the order of vertices in each edge does not matter.

If there are several solutions, you can print any.

输入输出样例

  • 输入#1

    4
    1 2
    2 3
    4 3
    1 3
    2 4
    1 4

    输出#1

    3
    3 2 4 2
    2 1 1 3
    4 3 1 4
  • 输入#2

    5
    1 2
    2 4
    3 4
    4 5
    1 2
    1 3
    1 4
    1 5

    输出#2

    4
    2 1 1 2
    3 4 1 3
    4 2 1 4
    5 4 1 5
  • 输入#3

    9
    7 9
    2 8
    2 1
    7 5
    4 7
    2 4
    9 6
    3 9
    1 8
    4 8
    2 9
    9 5
    7 6
    1 3
    4 6
    5 3

    输出#3

    8
    4 2 9 2
    9 7 6 7
    5 7 5 9
    6 9 4 6
    8 2 8 4
    3 9 3 5
    2 1 1 8
    7 4 1 3
首页