CF1284F.New Year and Social Network

NOI/NOI+/CTSC

通过率:0%

时间限制:4.00s

内存限制:1024MB

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 n−1n-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 e∈T1e \in T_1 becomes unusable. In this case, Donghyun will protect the edge ee by picking another edge f∈T2f \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 f∈T2f \in T_2 for as many edges e∈T1e \in T_1 as possible. However, since the backup network T2T_2 is fragile, f∈T2f \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 e∈E(T1),f∈E(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+fT_1 - {e} + {f} is a tree. You should find a maximum matching in this bipartite graph.

东贤新开发的社交网络服务(SNS)包含 nn 个用户,编号为 1,2,…,n1, 2, \ldots, n。其内部网络结构是一棵树图,因此用户之间共有 n−1n-1 条直接连接。任意两个用户均可通过若干条直接连接相互到达。此后,我们将该主网络记为 T1T_1。

为防止可能出现的服务器宕机,东贤构建了一个备份网络 T2T_2,它同样以一棵树图的形式连接相同的 nn 个用户。当系统发生故障时,T1T_1 中恰好一条边 e∈T1e \in T_1 将变得不可用。此时,东贤将通过从备份网络 T2T_2 中选取另一条边 f∈T2f \in T_2 并将其加入当前网络,来“保护”边 ee。新增的这条边 ff 应能使整个网络重新恢复连通性。

东贤希望为尽可能多的边 e∈T1e \in T_1 分配一条替换边 f∈T2f \in T_2。然而,由于备份网络 T2T_2 较为脆弱,每条边 f∈T2f \in T_2 最多只能被指定为 T1T_1 中至多一条边的替换边。在此约束下,东贤希望最大化被保护的 T1T_1 中的边数。

形式化地,设 E(T)E(T) 表示树 TT 的边集。我们构造一个二分图,其两部分顶点集分别为 E(T1)E(T_1) 和 E(T2)E(T_2)。对任意 e∈E(T1)e \in E(T_1) 和 f∈E(T2)f \in E(T_2),当且仅当图 T1−{e}+{f}T_1 - \{e\} + \{f\} 仍是一棵树时,ee 与 ff 之间存在一条边。你需要求出该二分图的一个最大匹配。

输入格式

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

In the next n−1n-1 lines, two integers aia_i, bib_i (1≤ai,bi≤n1 \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 n−1n-1 lines, two integers cic_i, did_i (1≤ci,di≤n1 \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.

第一行包含一个整数 nn(2≤n≤250 0002 \le n \le 250\,000),表示用户数量。

接下来的 n−1n-1 行中,每行给出两个整数 aia_i、bib_i(1≤ai,bi≤n1 \le a_i, b_i \le n),表示树 T1T_1 中某条边所连接的两个顶点的编号。

再接下来的 n−1n-1 行中,每行给出两个整数 cic_i、did_i(1≤ci,di≤n1 \le c_i, d_i \le n),表示树 T2T_2 中某条边所连接的两个顶点的编号。

保证这两组边均构成大小为 nn 的树。

输出格式

In the first line, print the number mm (0≤m<n0 \leq m \lt 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.

第一行输出整数 mm(0≤m<n0 \leq m \lt n),表示最多可保护的边数。

接下来 mm 行,每行输出四个整数 ai,bi,ci,dia_i, b_i, c_i, d_i。这四个数表示:将 T1T_1 中的边 (ai,bi)(a_i, b_i) 替换为 T2T_2 中的边 (ci,di)(c_i, d_i)。

所有输出的边必须分别属于其对应的网络,且在各自网络中对应互不相同的边。若从 T1T_1 中删除边 (ai,bi)(a_i, b_i) 并添加 T2T_2 中的边 (ci,di)(c_i, d_i),则该网络仍需保持连通。边的输出顺序以及每条边中两个顶点的顺序均无关紧要。

若存在多种解法,输出任意一种即可。

输入输出样例

  • 输入#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

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

首页