A13069 | New Year and Social Network
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
Donghyun's new social network service (SNS) contains $n$ users numbered $1, 2, \ldots, n$ . Internally, their network is a tree graph, so there are $n-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 $T_1$ .
To prevent a possible server breakdown, Donghyun created a backup network $T_2$ , which also connects the same $n$ users via a tree graph. If a system breaks down, exactly one edge $e \in T_1$ becomes unusable. In this case, Donghyun will protect the edge $e$ by picking another edge $f \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 \in T_2$ for as many edges $e \in T_1$ as possible. However, since the backup network $T_2$ is fragile, $f \in T_2$ can be assigned as the replacement edge for at most one edge in $T_1$ . With this restriction, Donghyun wants to protect as many edges in $T_1$ as possible.
Formally, let $E(T)$ be an edge set of the tree $T$ . We consider a bipartite graph with two parts $E(T_1)$ and $E(T_2)$ . For $e \in E(T_1), f \in E(T_2)$ , there is an edge connecting $\{e, f\}$ if and only if graph $T_1 - \{e\} + \{f\}$ is a tree. You should find a maximum matching in this bipartite graph.
To prevent a possible server breakdown, Donghyun created a backup network $T_2$ , which also connects the same $n$ users via a tree graph. If a system breaks down, exactly one edge $e \in T_1$ becomes unusable. In this case, Donghyun will protect the edge $e$ by picking another edge $f \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 \in T_2$ for as many edges $e \in T_1$ as possible. However, since the backup network $T_2$ is fragile, $f \in T_2$ can be assigned as the replacement edge for at most one edge in $T_1$ . With this restriction, Donghyun wants to protect as many edges in $T_1$ as possible.
Formally, let $E(T)$ be an edge set of the tree $T$ . We consider a bipartite graph with two parts $E(T_1)$ and $E(T_2)$ . For $e \in E(T_1), f \in E(T_2)$ , there is an edge connecting $\{e, f\}$ if and only if graph $T_1 - \{e\} + \{f\}$ is a tree. You should find a maximum matching in this bipartite graph.
输入格式
The first line contains an integer $n$ ( $2 \le n \le 250\,000$ ), the number of users.
In the next $n-1$ lines, two integers $a_i$ , $b_i$ ( $1 \le a_i, b_i \le n$ ) are given. Those two numbers denote the indices of the vertices connected by the corresponding edge in $T_1$ .
In the next $n-1$ lines, two integers $c_i$ , $d_i$ ( $1 \le c_i, d_i \le n$ ) are given. Those two numbers denote the indices of the vertices connected by the corresponding edge in $T_2$ .
It is guaranteed that both edge sets form a tree of size $n$ .
In the next $n-1$ lines, two integers $a_i$ , $b_i$ ( $1 \le a_i, b_i \le n$ ) are given. Those two numbers denote the indices of the vertices connected by the corresponding edge in $T_1$ .
In the next $n-1$ lines, two integers $c_i$ , $d_i$ ( $1 \le c_i, d_i \le n$ ) are given. Those two numbers denote the indices of the vertices connected by the corresponding edge in $T_2$ .
It is guaranteed that both edge sets form a tree of size $n$ .
输出格式
In the first line, print the number $m$ ( $0 \leq m < n$ ), the maximum number of edges that can be protected.
In the next $m$ lines, print four integers $a_i, b_i, c_i, d_i$ . Those four numbers denote that the edge $(a_i, b_i)$ in $T_1$ is will be replaced with an edge $(c_i, d_i)$ in $T_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 $(a_i, b_i)$ from $T_1$ and adds edge $(c_i, d_i)$ from $T_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.
In the next $m$ lines, print four integers $a_i, b_i, c_i, d_i$ . Those four numbers denote that the edge $(a_i, b_i)$ in $T_1$ is will be replaced with an edge $(c_i, d_i)$ in $T_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 $(a_i, b_i)$ from $T_1$ and adds edge $(c_i, d_i)$ from $T_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
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted